**************************************************************************************
	;Header frs File-linken

	IFD	Flag_project
Flag_water	set 1
	ENDC
	IFND	Flag_water
Flag_water	set 0
	ENDC
	IFEQ	Flag_water
Flag_water	set 1
	include	Nutz_project
	ELSEIF
**************************************************************************************
*-------------------------------------------------------------------------------------
*---------------	WATER INFO NUMBERS
*-------------------------------------------------------------------------------------
S_STRUDEL_UP	=064
S_STRUDEL_DOWN	=065
S_STRUDEL_LEFT	=066
S_STRUDEL_RIGHT	=067
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
S_Huhn_R		=068
S_Huhn_L		=069
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
S_Seeigel		=070
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
S_Smile_R		=071
S_Smile_L		=072
S_Smile_Body_R	=073
S_Smile_Body_L	=074
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
S_Muschel		=075
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
S_Fatfisch_R	=076
S_Fatfisch_L	=077
S_FAT_SHOOT		=078
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
S_Sgefisch_R	=079
S_Sgefisch_L	=080
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
S_Box_Gem		=081
S_Krug_Gem		=082
S_BOX_DAMAGE	=083
S_KRUG_DAMAGE	=084
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
S_WDOOR		=085
S_DOORDAM		=086
*-------------------------------------------------------------------------------------
		include	binary/Water/Water_ene.src

WArrowL_Obj0	EQU	Water_Obj_14
WArrowL_Obj1	EQU	Water_Obj_15
WArrowL_Obj2	EQU	Water_Obj_16
WArrowL_Obj3	EQU	Water_Obj_17

WArrowU_Obj0	EQU	Water_Obj_18
WArrowU_Obj1	EQU	Water_Obj_19
WArrowU_Obj2	EQU	Water_Obj_20
WArrowU_Obj3	EQU	Water_Obj_21

WShoot_Obj0	EQU	Water_Obj_28
WShoot_Obj1	EQU	Water_Obj_29

WWorm_Obj0	EQU	Water_Obj_5
WWorm_Obj1	EQU	Water_Obj_6
WWorm_Obj2	EQU	Water_Obj_7
WWorm_Obj3	EQU	Water_Obj_8

WColumn_Obj0	EQU	Water_Obj_32
WColumn_Obj1	EQU	Water_Obj_33
WColumn_Obj2	EQU	Water_Obj_34
WColumn_Obj3	EQU	Water_Obj_35

WChick_Obj0	EQU	Water_Obj_30
WChick_Obj1	EQU	Water_Obj_31

WChest_Obj0	EQU	Water_Obj_45
WChest_Obj1	EQU	Water_Obj_46
WChest_Obj2	EQU	Water_Obj_47
WChest_Obj3	EQU	Water_Obj_48

WAmphora_Obj0	EQU	Water_Obj_42
WAmphora_Obj1	EQU	Water_Obj_43
WAmphora_Obj2	EQU	Water_Obj_44

WSaw_Obj0		EQU	Water_Obj_9
WSaw_Obj1		EQU	Water_Obj_10
WSaw_Obj2		EQU	Water_Obj_11

WShell_Obj0	EQU	Water_Obj_36
WShell_Obj1	EQU	Water_Obj_37
WShell_Obj2	EQU	Water_Obj_38
WShell_Obj3	EQU	Water_Obj_39

WBigFish_Obj0	EQU	Water_Obj_22
WBigFish_Obj1	EQU	Water_Obj_23
WBigFish_Obj2	EQU	Water_Obj_24

WStarFish_Obj0	EQU	Water_Obj_0
WStarFish_Obj1	EQU	Water_Obj_1
WStarFish_Obj2	EQU	Water_Obj_2

WDoor_Obj0	EQU	Water_Obj_40
WDoor_Obj1	EQU	Water_Obj_41
WDoor_Obj2	EQU	Water_Obj_49	;Halbe Tr
WDoor_Obj3	EQU	Water_Obj_50	;Hide Tr
*-------------------------------------------------------------------------------------
**************************************************************************************
*-------------------------------------------------------------------------------------
*---------------	INFO TABLES
*-------------------------------------------------------------------------------------
S_WDOOR_I:	dc.l	WTest_Init_Doors
		dc.w	64,16
		dc.l	WDoor_Anim_Norm
		dc.w	0,8
		dc.b	0,BOB_HI_PRIO
*-------------------------------------------------------------------------------------
S_STRUDEL_UP_I:	dc.l	Strudel_Up_Rout
		dc.w	16,16
		dc.l	Strudel_Up_Anim
		dc.w	0,1
		dc.b	0,BOB_HI_PRIO
S_STRUDEL_DOWN_I:	dc.l	Strudel_Down_Rout
		dc.w	16,16
		dc.l	Strudel_Down_Anim
		dc.w	0,1
		dc.b	0,BOB_HI_PRIO
S_STRUDEL_RIGHT_I:	dc.l	Strudel_Right_Rout
		dc.w	16,16
		dc.l	Strudel_Right_Anim
		dc.w	0,1
		dc.b	0,BOB_HI_PRIO
S_STRUDEL_LEFT_I:	dc.l	Strudel_Left_Rout
		dc.w	16,16
		dc.l	Strudel_Left_Anim
		dc.w	0,1
		dc.b	0,BOB_HI_PRIO
S_SEEIGEL_I:	dc.l	Seeigel_Rout
		dc.w	48,48
		dc.l	Seeigel_Wait_Anm
		dc.w	0,4
		dc.b	0,BOB_MID_PRIO

S_WBOX_DAMAGE_I:	dc.l	Box_Damage_Rout
		dc.w	16,16
		dc.l	UBox_Dam_L_Anm
		dc.w	0,1
		dc.b	0,BOB_MID_PRIO

S_Box_Gem_I:	dc.l	Box_Gem_Rout_WI
		dc.w	28,48
		dc.l	WBox_Anm
		dc.w	0,8
		dc.b	0,BOB_MID_PRIO

S_Krug_Gem_I:	dc.l	Krug_Gem_Rout_WI
		dc.w	48,32
		dc.l	WKrug_Anm
		dc.w	0,8
		dc.b	0,BOB_MID_PRIO

S_WKRUG_DAMAGE_I:	dc.l	Box_Damage_Rout
		dc.w	16,16
		dc.l	WKrug_Dam_L_Anm
		dc.w	0,1
		dc.b	0,BOB_MID_PRIO

S_Muschel_I:	dc.l	Init_Bumper_Muschel
		dc.w	28,32
		dc.l	MBumper_Wait_Anm
		dc.w	0,4
		dc.b	0,BOB_HI_PRIO

S_Fatfisch_R_I:	dc.l	Init_Fat_Right
		dc.w	49,48
		dc.l	Fat_R_Anm
		dc.w	0,FAT_ANIM_SPEED
		dc.b	0,BOB_MID_PRIO

S_Fatfisch_L_I:	dc.l	Init_Fat_Left
		dc.w	49,48
		dc.l	Fat_L_Anm
		dc.w	0,FAT_ANIM_SPEED
		dc.b	0,BOB_MID_PRIO
S_FAT_SHOOT_I:	dc.l	Fat_Shoot_Rout_I
		dc.w	9,32
		dc.l	Fat_Shoot_Anm_L
		dc.w	0,4
		dc.b	0,BOB_MID_PRIO

S_Smile_R_I:	dc.l	Init_Smile_R
		dc.w	16,32
		dc.l	Head_R_Anim
		dc.w	0,0
		dc.b	0,BOB_MID_PRIO
S_Smile_L_I:	dc.l	Init_Smile_L
		dc.w	16,32
		dc.l	Head_L_Anim
		dc.w	0,0
		dc.b	0,BOB_MID_PRIO
S_Smile_Body_R_I:	dc.l	0
		dc.w	16,16
		dc.l	Body_R_Anim_1
		dc.w	0,400
		dc.b	0,BOB_MID_PRIO
S_Smile_Body_L_I:	dc.l	0
		dc.w	16,16
		dc.l	Body_L_Anim_1
		dc.w	0,400
		dc.b	0,BOB_MID_PRIO

S_Huhn_R_I:	dc.l	Init_Huhn_R
		dc.w	38,32
		dc.l	Huhn_R_Anm
		dc.w	0,$8
		dc.b	0,BOB_MID_PRIO
S_Huhn_L_I:	dc.l	Init_Huhn_L
		dc.w	38,32
		dc.l	Huhn_L_Anm
		dc.w	0,$8
		dc.b	0,BOB_MID_PRIO

S_Sgefisch_R_I:	dc.l	Init_Saege_Right
		dc.w	25,64
		dc.l	Saege_R_Anm
		dc.w	0
		dc.w	NORM_AS
		dc.b	0,BOB_MID_PRIO

S_Sgefisch_L_I:	dc.l	Init_Saege_Left
		dc.w	25,64
		dc.l	Saege_L_Anm
		dc.w	0
		dc.w	NORM_AS
		dc.b	0,BOB_MID_PRIO

*-------------------------------------------------------------------------------------
**************************************************************************************
*-------------------------------------------------------------------------------------
*---------------	BOB ROUTS
*-------------------------------------------------------------------------------------
**************************************************************************************
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*- - - - - - - -	STRUDELROUTS

Strudel_Up_Anim:	dc.w	0
		dc.l	WArrowU_Obj0,0
		dc.w	0
		dc.l	WArrowU_Obj1,0
		dc.w	0
		dc.l	WArrowU_Obj2,0
		dc.w	0
		dc.l	WArrowU_Obj3,0
		dc.w	ENTRY_END
		dc.l	Strudel_Up_Anim
Strudel_Down_Anim:	dc.w	2
		dc.l	WArrowU_Obj0,0
		dc.w	2
		dc.l	WArrowU_Obj1,0
		dc.w	2
		dc.l	WArrowU_Obj2,0
		dc.w	2
		dc.l	WArrowU_Obj3,0
		dc.w	ENTRY_END
		dc.l	Strudel_Down_Anim
Strudel_Right_Anim:	dc.w	1
		dc.l	WArrowL_Obj0,0
		dc.w	1
		dc.l	WArrowL_Obj1,0
		dc.w	1
		dc.l	WArrowL_Obj2,0
		dc.w	1
		dc.l	WArrowL_Obj3,0
		dc.w	ENTRY_END
		dc.l	Strudel_Right_Anim
Strudel_Left_Anim:	dc.w	0
		dc.l	WArrowL_Obj0,0
		dc.w	0
		dc.l	WArrowL_Obj1,0
		dc.w	0
		dc.l	WArrowL_Obj2,0
		dc.w	0
		dc.l	WArrowL_Obj3,0
		dc.w	ENTRY_END
		dc.l	Strudel_Left_Anim
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Strudel_Up_Rout	*--*>Handle UP STRUDEL
		jsr	Standart_BobAnim
		jsr	Test_Bob_Out
		*--*>Make_Anziehung
		lea	WorkRam,a2
		move	Bob_X_Position(a4),d0
		move	Bob_Y_Position(a4),d1
		sub	TEMET_X_Position(a2),d0
		bpl.s	.OkX
		neg	d0
.OkX		sub	TEMET_Y_Position(a2),d1
		bpl.s	.OkY
		neg	d1
.OkY		*--*>Test Y
		cmp	#48,d0
		bhs.s	.NoNo
		cmp	#80,d1
		bhs.s	.NoNo
		*--*>Vielleicht doch nicht
		tst	STOP_Bumping(a6)
		beq.s	.WEITA
		subq	#1,STOP_Bumping(a6)
		bra.s	.NoNo
.WEITA
		*--*>Anziehung
		move	#100,d2
		sub	d1,d2
		move	#$0280,d3
		mulu	d2,d3
		divu	#100,d3
		sub	d3,TEMET_Speed_Y(a2)
		move	#VENTILATOR,TEMET_Status(a2)
		addq	#1,TEMET_Venti_ON(a2)
		cmp	#2,TEMET_New_Calc_Flag(a2)
		bne.s	.NoNo
		subq	#2,TEMET_Y_Position(a2)
		clr.w	TEMET_New_Calc_Flag(a2)
.NoNo		*--*>Show dat ding
		jsr	Show_Strudels
		rts
*-------------------------------------------------------------------------------------
Strudel_Right_Rout
		*--*>Handle RIGHT STRUDEL
		jsr	Standart_BobAnim
		jsr	Test_Bob_Out
		*--*>Make_Anziehung
		lea	WorkRam,a2
		move	Bob_X_Position(a4),d0
		move	Bob_Y_Position(a4),d1
		sub	TEMET_X_Position(a2),d0
		bpl.s	.OkX
		neg	d0
.OkX		sub	TEMET_Y_Position(a2),d1
		bpl.s	.OkY
		neg	d1
.OkY		*--*>Test Y
		cmp	#80,d0
		bhs.s	.NoNo
		cmp	#48,d1
		bhs.s	.NoNo
		*--*>Vielleicht doch nicht
		tst	STOP_Bumping(a6)
		beq.s	.WEITA
		subq	#1,STOP_Bumping(a6)
		bra.s	.NoNo
.WEITA		*--*>Anziehung
		move	#100,d2
		sub	d0,d2
		move	#$01a0,d3
		mulu	d2,d3
		divu	#100,d3
		add	d3,TEMET_Speed_X(a2)
		move	#VENTILATOR,TEMET_Status(a2)
		addq	#1,TEMET_Venti_ON(a2)
.NoNo		*--*>Show dat ding
		jsr	Show_Strudels
		rts
*-------------------------------------------------------------------------------------
Strudel_Down_Rout	*--*>Handle DOWN STRUDEL
		jsr	Standart_BobAnim
		jsr	Test_Bob_Out
		*--*>Make_Anziehung
		lea	WorkRam,a2
		move	Bob_X_Position(a4),d0
		move	Bob_Y_Position(a4),d1
		sub	TEMET_X_Position(a2),d0
		bpl.s	.OkX
		neg	d0
.OkX		sub	TEMET_Y_Position(a2),d1
		bpl.s	.OkY
		neg	d1
.OkY		*--*>Test Y
		cmp	#48,d0
		bhs.s	.NoNo
		cmp	#80,d1
		bhs.s	.NoNo
		*--*>Vielleicht doch nicht
		tst	STOP_Bumping(a6)
		beq.s	.WEITA
		subq	#1,STOP_Bumping(a6)
		bra.s	.NoNo
.WEITA		*--*>Anziehung
		move	#100,d2
		sub	d1,d2
		move	#$01c0,d3
		mulu	d2,d3
		divu	#100,d3
		add	d3,TEMET_Speed_Y(a2)
		move	#VENTILATOR,TEMET_Status(a2)
		addq	#1,TEMET_Venti_ON(a2)
.NoNo		jsr	Show_Strudels
		rts
*-------------------------------------------------------------------------------------
Strudel_Left_Rout	*--*>Handle LEFT STRUDEL
		jsr	Standart_BobAnim
		jsr	Test_Bob_Out
		*--*>Make_Anziehung
		lea	WorkRam,a2
		move	Bob_X_Position(a4),d0
		move	Bob_Y_Position(a4),d1
		sub	TEMET_X_Position(a2),d0
		bpl.s	.OkX
		neg	d0
.OkX		sub	TEMET_Y_Position(a2),d1
		bpl.s	.OkY
		neg	d1
.OkY		*--*>Test Y
		cmp	#80,d0
		bhs.s	.NoNo
		cmp	#48,d1
		bhs.s	.NoNo
		*--*>Vielleicht doch nicht
		tst	STOP_Bumping(a6)
		beq.s	.WEITA
		subq	#1,STOP_Bumping(a6)
		bra.s	.NoNo
.WEITA		*--*>Anziehung
		move	#100,d2
		sub	d0,d2
		move	#$01a0,d3
		mulu	d2,d3
		divu	#100,d3
		sub	d3,TEMET_Speed_X(a2)
		move	#VENTILATOR,TEMET_Status(a2)
		addq	#1,TEMET_Venti_ON(a2)
.NoNo		jsr	Show_Strudels
		rts

***************************************************************************
*-------------------------------------------------------------------------------------
Show_Saege:
Show_Huhn:
Show_Krug:
Show_Lamp:
Show_Smiler:
Show_Fat_Shoot:
Show_Fat:
Show_Muschel:
Show_Boxes:
Show_Seeigels:
Show_Strudels:
Show_Water_Object:	*--*>Show it
		move.w	#Water_EnemyVRam/32,d3
		move.l	Bob_SigelInfo(a4),a0
		move.w	Bob_FlipStatus(a4),d2
		jsr	Show_Simple_Object
		rts
**************************************************************************************
*-------------------------------------------------------------------------------------
*-----------	SEEIGEL 
*-------------------------------------------------------------------------------------
*---------------------------------------------------------------------------
Seeigel_Wait_Anm:	dc.w	0
		dc.l	WStarFish_Obj0,0
		dc.w	ENTRY_END
		dc.l	Seeigel_Wait_Anm
Seeigel_Blink_Anm:
		dc.w	0
		dc.l	WStarFish_Obj2,0
		dc.w	0
		dc.l	WStarFish_Obj2,0
		dc.w	0
		dc.l	WStarFish_Obj1,0
		dc.w	ENTRY_END
		dc.l	Seeigel_Wait_Anm
*-------------------------------------------------------------------------------------
See_Y_Schwank	=Bob_Special_1	;W
See_Make_Blink_Cnt	=Bob_Special_2	;B
See_Save_Offset	=Bob_Special_3	;W
*-------------------------------------------------------------------------------------
Seeigel_Rout:	*--Standart Routs
		move	Bob_Y_Offset(a4),See_Save_Offset(a4)
		jsr	Standart_BobAnim
		move	See_Save_Offset(a4),Bob_Y_Offset(a4)
		and	#$fff0,Bob_X_Position(a4)
		jsr	Test_Bob_Out
		jsr	Test_TEMET_Hit_St
		jsr	Test_Igel_Hit
		jsr	Seeigel_Y_Schwank
		jsr	Make_Blink_1
		jsr	PlayBubble_Rout
		jsr	Show_Seeigels
		rts
*-------------------------------------------------------------------------------------
Make_Blink_1	*--Blinker mit Augen
		tst.b	See_Make_Blink_Cnt(a4)
		beq.s	.Make_new_Blink_Tme
		*--Test Make Blink
		subq.b	#1,See_Make_Blink_Cnt(a4)
		bne.s	.GoBack
		*--*>Init Blink
		move.l	#Seeigel_Blink_Anm,Bob_Next_Anim(a4)
.GoBack		rts
.Make_new_Blink_Tme	*--*>Make New Blink Time
		jsr	Get_Zuffi_d2
		and	#15,d2
		lsl	#3,d2
		move.b	d2,See_Make_Blink_Cnt(a4)
		rts
*---------------------------------------------------------------------------
Seeigel_Y_Schwank	*--*>Make Y Schank
		lea	.SchwankTab,a0
		add	See_Y_Schwank(a4),a0
		cmp.b	#-2,(a0)
		bne.s	.okTab
		clr.w	See_Y_Schwank(a4)
		lea	.SchwankTab,a0
.okTab		move.b	(a0),d0
		addq	#1,See_Y_Schwank(a4)
		ext.w	d0
		add	d0,Bob_Y_Offset(a4)
		rts
.SchwankTab	dc.b	-1,0,0,0,-1,0,0,0,0,-1,0,0,0,0,0,0,+1,0,0,0,0,+1,0,0,0,+1
		dc.b	0,0,0,+1,0,0,0,0,+1,0,0,0,0,0,0,-1,0,0,0,0,-1,0,0,0
		dc.b	-2
		even

*---------------------------------------------------------------------------
Test_Igel_Hit	*--*> Test if FISH is Hit
		add	#16,Bob_Y_Position(a4)	;TIMET mu zuerst getroffen werden !
		lea	WorkRam,a2
		jsr	KollTopBobTest
		tst	d7
		bmi.s	.NoKoll
		lea	WorkRam,a2
		jsr	Make_Bump
		cmp	#2,TEMET_Shield_Flag(a2)
		bhs.s	.Enter_Smoke

		jsr	Sub_TEMET_Hitpoint_St

.Enter_Smoke	*--Enter BIG Smoke
		moveq	#8,d3
		moveq	#6,d4
		jsr	ENTER_SMOKE_Y
		moveq	#8,d3
		moveq	#6,d4
		jsr	ENTER_SMOKE_X
		jsr	Out_Bob_Damage
		IFEQ	SOUNDFX
		moveq	#11,d0
		jsr	TFMX+16
		ENDC
.NoKoll
		sub	#16,Bob_Y_Position(a4)	;TIMET mu zuerst getroffen werden !
		rts

**************************************************************************************
*-------------------------------------------------------------------------------------
*------------	MUSCHELBUMPER
*-------------------------------------------------------------------------------------
Bumper_Bump_Speed	=Bob_Special_1	;B
Bumper_Bump_Time	=Bob_Special_1+1	;B
BumperMake_Blink_Cnt=Bob_Special_2	;B
BumperSave_Offset	=Bob_Special_3	;W
Bumper_Work_Time	=Bob_Special_4	;B
Bumper_BackAnim_Flg	=Bob_Special_4+1	;B
*-------------------------------------------------------------------------------------
Init_Bumper_Muschel:
		move.b	#-8,Bumper_Bump_Speed(a4)
		move.b	#12,Bumper_Bump_Time(a4)
		move.l	#Bumper_Rout_1,Bob_Routine(a4)
		and	#$fff0,Bob_X_Position(a4)
		;move	#1,Bob_Back_Anim(a4)
		add	#7,Bob_Y_Position(a4)
		rts
*-------------------------------------------------------------------------------------
Bumper_Rout_1:	*--Standart Routs
		jsr	Test_Bob_Out
		;move	Bob_Y_Offset(a4),BumperSave_Offset(a4)
		jsr	Standart_BobAnim
		;move	BumperSave_Offset(a4),Bob_Y_Offset(a4)
		jsr	Show_Muschel
		jsr	Make_Blink
		tst.b	Bumper_Work_Time(a4)
		bne.s	.Bumper_is_Working
		*--Test if Timet is Bumping
		move	#$8,Bob_Anim_Delay_Init(a4)
		lea	WorkRam,a2
		cmp	#FLIEGEN,TEMET_Status(a2)
		beq.s	.NoBump
		jsr	KollTopBobTest
		tst	d7
		bmi 	.NoBump
		*--Turn on Kollision
		move.l	#MBumper_Work_Anm,Bob_Next_Anim(a4)
		jsr	Get_Next_Bob_Frame
		clr.w	Bob_Anim_Delay(a4)
		move	#1,Bob_Anim_Delay_Init(a4)
		move.b	Bumper_Bump_Time(a4),Bumper_Work_Time(a4)
		IFEQ	SOUNDFX
		moveq	#10,d0
		jsr	TFMX+16
		ENDC
		bra.s	.Bumper_is_Working
.NoBump		rts
.Bumper_is_Working	*--Work Bumper
		lea	WorkRam,a2
		subq.b	#1,Bumper_Work_Time(a4)
		jsr	Force_Init_Jump
		move	#SPRINGEN,TEMET_Status(a2)
		clr.w	TEMET_Speed_Y(a2)
		move.b	Bumper_Bump_Speed(a4),TEMET_Speed_Y(a2)
		rts
*-------------------------------------------------------------------------------------
Make_Blink	*--Blinker mit Augen
		tst.b	BumperMake_Blink_Cnt(a4)
		beq.s	.Make_new_Blink_Tme
		*--Test Make Blink
		subq.b	#1,BumperMake_Blink_Cnt(a4)
		bne.s	.GoBack
		*--*>Init Blink
		move.l	#MBumper_Blink_Anm,Bob_Next_Anim(a4)
.GoBack		rts
.Make_new_Blink_Tme	*--*>Make New Blink Time
		jsr	Get_Zuffi_d2
		and	#15,d2
		lsl	#3,d2
		move.b	d2,BumperMake_Blink_Cnt(a4)
		rts
*---------------------------------------------------------------------------
MBumper_Wait_Anm:	dc.w	0
		dc.l	WShell_Obj1,0
		dc.w	ENTRY_END
		dc.l	MBumper_Wait_Anm
MBumper_Work_Anm:	dc.w	0
		dc.l	WShell_Obj0,$4
		dc.w	0
		dc.l	WShell_Obj0,$4
		dc.w	0
		dc.l	WShell_Obj0,$4
		dc.w	0
		dc.l	WShell_Obj0,$4
		dc.w	0
		dc.l	WShell_Obj0,$4
		dc.w	ENTRY_END
		dc.l	MBumper_Wait_Anm

MBumper_Blink_Anm:	dc.w	0
		dc.l	WShell_Obj2,0
		dc.w	0
		dc.l	WShell_Obj3,0
		dc.w	0
		dc.l	WShell_Obj3,0
		dc.w	0
		dc.l	WShell_Obj2,0
		dc.w	ENTRY_END
		dc.l	MBumper_Wait_Anm

*************************************************************************************
*-------------------------------------------------------------------------------------
*-------------	FATFISH ROUTS
*-------------------------------------------------------------------------------------
Fat_Shoot_Anm_L:	dc.w	0
		dc.l	WShoot_Obj0,0
		dc.w	0
		dc.l	WShoot_Obj1,0
		dc.w	ENTRY_END
		dc.l	Fat_Shoot_Anm_L
Fat_Shoot_Anm_R:	dc.w	1
		dc.l	WShoot_Obj0,0
		dc.w	1
		dc.l	WShoot_Obj1,0
		dc.w	ENTRY_END
		dc.l	Fat_Shoot_Anm_R
*-------------------------------------------------------------------------------------
Shoot_Dir		=Bob_Special_1	;B
*-------------------------------------------------------------------------------------
Fat_Shoot_Rout_I	*--*>Init Shot Rout
		move.l	#Fat_Shoot_Rout,Bob_Routine(a4)
		tst.b	Shoot_Dir(a4)
		bmi.s	Fat_Shoot_Rout
		move.l	#Fat_Shoot_Anm_R,Bob_Next_Anim(a4)
		jsr	Get_Next_Bob_Frame
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Fat_Shoot_Rout	*--*>Shoot Rout
		jsr	Test_Bob_Out
		jsr	Standart_BobAnim
		jsr	Test_TEMET_Hit
		*--*>Make_X_Speed
		tst.b	Shoot_Dir(a4)
		bpl.s	.Okdoky
		subq	#4,Bob_X_Position(a4)
		bra.s	.TestXKoll
.Okdoky		addq	#4,Bob_X_Position(a4)
.TestXKoll	jsr	.Test_X_Kollision
		jsr	Show_Fat_Shoot
		rts
*-------------------------------------------------------------------------------------
.Test_X_Kollision	*--*>Test X Koll
		move	Bob_X_Position(a4),d0
		move	Bob_Y_Position(a4),d1
		addq	#7,d1
		tst.b	Shoot_Dir(a4)
		bmi.s	.Test_Left_X_Koll
.Test_Right_X_Koll	*--Right X Koll
		add	#32,d0
.Test_Left_X_Koll	*--Left X Koll
		jsr	Get_Block_Bits
		swap	d0
		*--Test auf X Kolli
		btst	#SCR_KOLLISION_BIT,d0
		beq.s	.NoXKolli1
		*--*>OutShoot
		moveq	#-4,d3
		moveq	#-8,d4
		jsr	ENTER_SMOKE_Y_Offs
		jsr	Out_Bob_Damage
.NoXKolli1	rts
*-------------------------------------------------------------------------------------
*-------------------------------------------------------------------------------------
Fat_L_Anm:	dc.w	0
		dc.l	WBigFish_Obj1,0
		dc.w	ENTRY_END
		dc.l	Fat_L_Anm
Fat_R_Anm:	dc.w	1
		dc.l	WBigFish_Obj1,0
		dc.w	ENTRY_END
		dc.l	Fat_R_Anm

Fat_L_PlAnm:	dc.w	0
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	0
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	0
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	0
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	0
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	0
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	0
		dc.l	WBigFish_Obj1,0
		dc.w	0
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	0
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	0
		dc.l	WBigFish_Obj1,0
		dc.w	0
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	ENTRY_END
		dc.l	Fat_L_Anm

Fat_R_PlAnm:	dc.w	1
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	1
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	1
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	1
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	1
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	1
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	1
		dc.l	WBigFish_Obj1,0
		dc.w	1
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	1
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	1
		dc.l	WBigFish_Obj1,0
		dc.w	1
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	ENTRY_END
		dc.l	Fat_R_Anm

Fat_L_ShAnm	dc.w	0
		dc.l	WBigFish_Obj2
		dc.w	12,-4
		dc.w	0
		dc.l	WBigFish_Obj2
		dc.w	12,-4
		dc.w	0
		dc.l	WBigFish_Obj2
		dc.w	12,-4
		dc.w	0
		dc.l	WBigFish_Obj2
		dc.w	12,-4
		dc.w	0
		dc.l	WBigFish_Obj2
		dc.w	12,-4
		dc.w	0
		dc.l	WBigFish_Obj2
		dc.w	12,-4
		dc.w	0
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	0
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	0
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	0
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	0
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	ENTRY_END
		dc.l	Fat_L_Anm

Fat_R_ShAnm
		dc.w	1
		dc.l	WBigFish_Obj2
		dc.w	12,-4
		dc.w	1
		dc.l	WBigFish_Obj2
		dc.w	12,-4
		dc.w	1
		dc.l	WBigFish_Obj2
		dc.w	12,-4
		dc.w	1
		dc.l	WBigFish_Obj2
		dc.w	12,-4
		dc.w	1
		dc.l	WBigFish_Obj2
		dc.w	12,-4
		dc.w	1
		dc.l	WBigFish_Obj2
		dc.w	12,-4
		dc.w	1
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	1
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	1
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	1
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	1
		dc.l	WBigFish_Obj0
		dc.w	-6,8
		dc.w	ENTRY_END
		dc.l	Fat_R_Anm

*---------------------------------------------------------------------------
Fat_X_Dir		=Bob_Special_1	;B
Fat_Which_Rout	=Bob_Special_1+1	;B
Fat_X_Range	=Bob_Special_2	;W
Fat_Hit		=Bob_Special_3	;B
Fat_Anz_Hits	=Bob_Special_3+1	;B
Fat_X_Speed	=Bob_Special_4	;W
Fat_Wait_Time	=Bob_Koords_Save1	;W
Fat_Y_Acce	=Bob_Koords_Save1+2	;W
Fat_Y_Speed	=Bob_Koords_Save2	;W
Fat_Shoot_Time	=Bob_Koords_Save2+2	;W
FatSaegeSchwank	=Bob_Plane_Order	;W
FAT_ANIM_SPEED	=2
*---------------------------------------------------------------------------
Init_Fat_Left	*--*>Init Values for Flyer
		move.b	#-1,Fat_X_Dir(a4)
		bra.s	GLOBAL_FAT_INIT
Init_Fat_Right	*--*>Init Values for Flyer
		move.b	#1,Fat_X_Dir(a4)
GLOBAL_FAT_INIT	move.l	#Fat_Main_Rout,Bob_Routine(a4)
		move.b	#F_NORM_ROUT,Fat_Which_Rout(a4)
		move	#1,Fat_X_Speed(a4)
		move	#$000c,Fat_Y_Acce(a4)
		rts
*-------------------------------------------------------------------------------------
F_NORM_ROUT	=0
F_ATTACK_ROUT	=1
*-------------------------------------------------------------------------------------
Fat_Main_Rout	*--*>StandartRouts
		jsr	PlayBubble_Rout
		jsr	Test_Bob_Out
		jsr	Standart_BobAnim
		move	#NORMAL,Bob_Race(a4)
*-------------------------------------------------------------------------------------
*-----------	Fat CALL ROUTS DEPENDING ON MODE
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Normal_Routs	*--*>Test if Timet Hits Fat
		jsr	.Test_TEMET_Hit_Bob
		jsr	Fat_Y_Schwank
		jsr	Test_TEMET_Hit
		jsr	.Test_Y_Bump
		jsr	.Test_TEMET_Trace

.TestShoot		*--*>TEST SHOOT
		tst	Fat_Shoot_Time(a4)
		beq	.TestWait
		*--*>SHOOT !
		subq	#1,Fat_Shoot_Time(a4)
		cmp	#30,Fat_Shoot_Time(a4)
		beq.s	.Shoot
		cmp	#90,Fat_Shoot_Time(a4)
		beq.s	.Shoot
		cmp	#159,Fat_Shoot_Time(a4)
		beq.s	.Shoot

		cmp	#159+24,Fat_Shoot_Time(a4)
		beq.s	.Enter_Shoot_Anm
		cmp	#90+24,Fat_Shoot_Time(a4)
		beq.s	.Enter_Shoot_Anm
		cmp	#30+24,Fat_Shoot_Time(a4)
		beq.s	.Enter_Shoot_Anm

		bra.s	.TestWait

.Enter_Shoot_Anm	*--*>Enter Shoot Spuck Anim
		move.l	#Fat_L_ShAnm,Bob_Next_Anim(a4)
		tst.b	Fat_X_Dir(a4)
		bmi	.TestWait
		move.l	#Fat_R_ShAnm,Bob_Next_Anim(a4)
		bra.s	.TestWait

.Shoot		*--Enter Shoot
		IFEQ	SOUNDFX
		moveq	#2,d0
		jsr	TFMX+16
		ENDC
		moveq	#S_FAT_SHOOT,d0
		lea	Area_Enter_Vector(a6),a1
		move	Bob_X_Position(a4),d1
		sub	#32,d1
		tst.b	Fat_X_Dir(a4)
		bmi.s	.NoAdd
		add	#32+32,d1
.NoAdd		move	Bob_Y_Position(a4),d2
		add	#24,d2
		move.l	a4,a5
		jsr	Search_Bob_Entry
		tst	d0
		bmi.s	.TestWaitS
.Choose_Flug	*--Choose Which Flugbahn
		move.b	Fat_X_Dir(a5),Shoot_Dir(a4)
.TestWaitS		move.l	a5,a4

.TestWait		*--*>Test if wait
		tst	Fat_Wait_Time(a4)
		beq.s	.NRouts
		*--*>Wait Time
		subq	#1,Fat_Wait_Time(a4)
.Ende
		jsr	Show_Fat
		rts

.NRouts		*--*>Call Dir Routs
		jsr	.Make_X_Speed
		jsr	.Test_X_Kollision
		jsr	Show_Fat
		rts
**************************************************************************************
.Make_X_Speed	*--*>X Speed Make
		tst.b	Fat_Anz_Hits(a4)
		bne.s	.NoTestFrame
		tst.b	Akt_Copper_Frame(a6)
		beq	.NoRangeChange
.NoTestFrame	tst.b	Fat_X_Dir(a4)
		bpl.s	.Move_Right
.Move_Left	*--Test if Flyer scholud move Right
		tst	Fat_X_Range(a4)
		bpl.s	.Move_X
		move	Fat_X_Range(a4),d0
		neg	d0
		cmp	#100,d0
		blo.s	.Move_X
		neg.b	Fat_X_Dir(a4)
		move.l	#Fat_R_Anm,Bob_Next_Anim(a4)
		clr.w	Bob_Anim_Delay(a4)
		move	#50,Fat_Wait_Time(a4)
		bra.s	.Move_X
.Move_Right	*--Test if Flyer scholud move Left
		tst	Fat_X_Range(a4)
		bmi.s	.Move_X
		move	Fat_X_Range(a4),d0
		cmp	#100,d0
		blo.s	.Move_X
		neg.b	Fat_X_Dir(a4)
		move.l	#Fat_L_Anm,Bob_Next_Anim(a4)
		clr.w	Bob_Anim_Delay(a4)
		move	#50,Fat_Wait_Time(a4)
		;bra.s	.Move_X
.Move_X		*--Move Flyer in X Direction
		move	Fat_X_Speed(a4),d0
		tst.b	Fat_X_Dir(a4)
		bpl.s	.NoMinus
		neg	d0
.NoMinus		add	d0,Bob_X_Position(a4)
		cmp.b	#F_ATTACK_ROUT,Fat_Which_Rout(a4)
		beq.s	.NoRangeChange
		add	d0,Fat_X_Range(a4)
.NoRangeChange	rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Make_Y_Speed	*--*>Y Speed Make
		move.b	Fat_Y_Speed(a4),d0
		ext.w	d0
		add	d0,Bob_Y_Position(a4)
		sub	#$0018,Fat_Y_Speed(a4)
		cmp	#$0100,Fat_Y_Speed(a4)
		bhi.s	.NoGeradeFly
		tst.b	Fat_X_Dir(a4)
		bpl.s	.Init_Right_Fly
.Init_Leftt_Fly	*--*>Init Left Fly Anim
		move.l	#Fat_L_Anm,Bob_Next_Anim(a4)
		bra.s	.NoGeradeFly
.Init_Right_Fly	*--*>Init Right Fly Anim
		move.l	#Fat_R_Anm,Bob_Next_Anim(a4)
.NoGeradeFly	*--*>Test if Attack_Off
		tst	Fat_Y_Speed(a4)
		bpl.s	.Endeit
		*--*>Attack Off
		move.b	#F_NORM_ROUT,Fat_Which_Rout(a4)
.Endeit		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Test_X_Koll_Dam	rts	

*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Test_X_Kollision	*--*>Test X Kollision of Flyer
		move	Bob_X_Position(a4),d0
		add	Bob_X_Offset(a4),d0
		tst.b	Fat_X_Dir(a4)
		bmi.s	.Test_Left_X_Koll
		add	#48,d0
.Test_Left_X_Koll	move	Bob_Y_Position(a4),d1
		add	Bob_Y_Offset(a4),d1
		addq	#8,d1
		jsr	Get_Block_Bits
		swap	d0
		*--Test auf X Kolli
		btst	#SCR_KOLLISION_BIT,d0
		beq.s	.NoXKolli1
		*--Init Right Flyer
		move	#50,Fat_Wait_Time(a4)
		clr.w	Bob_Anim_Delay(a4)
		neg.b	Fat_X_Dir(a4)
		tst.b	Fat_X_Dir(a4)
		bpl.s	.RightAnmI
.LeftAnmI		move.l	#Fat_L_Anm,Bob_Next_Anim(a4)
		rts
.RightAnmI		move.l	#Fat_R_Anm,Bob_Next_Anim(a4)
.NoXKolli1		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*-------------------------------------------------------------------------------------
.Test_Y_Bump	*--*>Test if Fat Bumps on Ground
		tst	Fat_Y_Speed(a4)
		bmi.s	.DeckeTest	;No_Down_Kollide
		move	Bob_X_Position(a4),d0
		add	#24,d0
		move	Bob_Y_Position(a4),d1
		add	Bob_Y_Offset(a4),d1
		add	#44,d1
		jsr	Get_Block_Bits
		add	d0,d0
		add	d0,d0
		move.l	Scr_Block_EntryAdrs(a6),a1
		move.l	(a1,d0),a1
		cmp.b	#boden,Block_Through(a1)
		bne.s	.No_Down_Kollide
		*--*>Normal
		IFEQ	SOUNDFX
		moveq	#3,d0
		jsr	TFMX+16
		ENDC
		and	#$fff0,Bob_Y_Position(a4)
		neg	Fat_Y_Speed(a4)
		tst	Fat_Y_Acce(a4)
		bpl.s	.Okpos
		neg	Fat_Y_Acce(a4)
.Okpos		moveq	#8,d3
		moveq	#16,d4
		jsr	ENTER_SMOKE_X_Offs
.No_Down_Kollide	rts

.DeckeTest		move	Bob_X_Position(a4),d0
		add	#24,d0
		move	Bob_Y_Position(a4),d1
		add	Bob_Y_Offset(a4),d1
		jsr	Get_Block_Bits
		swap	d0
		btst	#SCR_KOLLISION_BIT,d0
		beq.s	.NoUpKollide
		move	#$0100,Fat_Y_Speed(a4)
		addq	#4,Bob_Y_Position(a4)
		tst	Fat_Y_Acce(a4)
		bpl.s	.OkposU
		neg	Fat_Y_Acce(a4)
.OkposU		moveq	#8,d3
		moveq	#-8,d4
		jsr	ENTER_SMOKE_X_Offs
.NoUpKollide	rts
*-------------------------------------------------------------------------------------
*-----------	Fat DEAD/DAMAGE ROUTS
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Test_TEMET_Hit_Bob	*--*>Test if Bob should blink White
		jsr	Get_Zuffi_d0
		tst.b	Akt_Copper_Frame(a6)
		beq.s	.NoColourOn
		tst.b	Fat_Hit(a4)
		beq.s	.NoColourOn
		subq.b	#1,Fat_Hit(a4)
		;move	#COLOUR,Bob_Race(a4)
.NoColourOn	*--*>Test Kollision with TEMET
		lea	WorkRam,a2
		jsr	KollTopBobTest
		tst	d7
		bmi	.NoKoll
		*--Kollision ! Test if Flyer should explode
		lea	WorkRam,a2
		cmp	#FLIEGEN,TEMET_Status(a2)
		beq	.Fat_Explode
		cmp	#3,TEMET_Shield_Flag(a2)
		beq	.Fat_Explode
.Make_Bob_Hit	*--Make Bob Hit
		addq.b	#1,Fat_Anz_Hits(a4)
		cmp.b	#6,Fat_Anz_Hits(a4)
		beq	.Fat_Explode_Extra
		*--*>Normal Hit
		IFEQ	SOUNDFX
		moveq	#9,d0
		jsr	TFMX+16
		ENDC
		move	#$0280,Fat_Y_Speed(a4)
		tst	Fat_Y_Acce(a4)
		bmi.s	.OKneg
		neg	Fat_Y_Acce(a4)
.OKneg		sub	#$0008,Fat_Y_Acce(a4)
		cmp.b	#1,Fat_Anz_Hits(a4)
		beq.s	.NoAddThisTime
		addq	#1,Fat_X_Speed(a4)
.NoAddThisTime	jsr	Make_Bump
		move.b	#12,Fat_Hit(a4)
		move	#0,Fat_Wait_Time(a4)
		move	#0,Fat_Shoot_Time(a4)
		moveq	#8,d3
		moveq	#8,d4
		jsr	ENTER_SMOKE_X
		tst.b	Fat_X_Dir(a4)
		bpl.s	.Init_Right_FlyH
.Init_Leftt_FlyH	*--*>Init Left Fly Anim
		move.l	#Fat_L_PlAnm,Bob_Next_Anim(a4)
		lea	Spuck_Left_Tab,a0
		jsr	Spuck_GEMExtra_Rout
		rts
.Init_Right_FlyH	*--*>Init Right Fly Anim
		move.l	#Fat_R_PlAnm,Bob_Next_Anim(a4)
		lea	Spuck_Right_Tab,a0
		jsr	Spuck_GEMExtra_Rout
		rts
.Fat_Explode	*--Fat Explode
		IFEQ	SOUNDFX
		moveq	#11,d0
		jsr	TFMX+16
		ENDC
		lea	WorkRam,a2
		jsr	Make_Bump
		moveq	#0,d3
		moveq	#0,d4
		jsr	ENTER_SMOKE_X_Offs
		moveq	#8,d3
		moveq	#8,d4
		jsr	ENTER_SMOKE_Y_Offs
		moveq	#16,d3
		moveq	#16,d4
		jsr	ENTER_SMOKE_X_Offs
		jsr	Out_Bob_Damage
		lea	Spuck_drei_Tab,a0
		jsr	Spuck_GEMExtra_Rout
		rts
.Fat_Explode_Extra	*--Fat Explode
		IFEQ	SOUNDFX
		moveq	#11,d0
		jsr	TFMX+16
		ENDC
		lea	WorkRam,a2
		jsr	Make_Bump
		moveq	#0,d3
		moveq	#0,d4
		jsr	ENTER_SMOKE_X_Offs
		moveq	#8,d3
		moveq	#8,d4
		jsr	ENTER_SMOKE_Y_Offs
		moveq	#16,d3
		moveq	#16,d4
		jsr	ENTER_SMOKE_X_Offs
		jsr	Out_Bob_Damage
		lea	Spuck_Extra_Tab,a0
		jsr	Spuck_GEMExtra_Rout
		rts
.NoKoll		*--keine Kollision
		rts
*-------------------------------------------------------------------------------------
*-------
*-------		TEMET IN SHOOT RANGE
*-------
.Test_TEMET_Trace	*--*> Test if TEMET is in Range
		*--Get Values
		lea	WorkRam,a2
		move	TEMET_X_Position(a2),d0
		move	TEMET_Y_Position(a2),d1
		*--Sub Bob Values
		sub	Bob_X_Position(a4),d0
		sub	#16,d0
		sub	Bob_Y_Position(a4),d1
		*--Test if Bob-YDir is down
		bpl.s	.TDown
.TUP		neg	d1
		cmp	#24,d1
		bhi.s	.No_Temet_Trace
.TDown		cmp	#24,d1
		bhi.s	.No_Temet_Trace

		*--Test if Direction is Ok
		tst	d0
		bpl.s	.Fat_Left
.Fat_Right	*--Fat is Right
		tst.b	Fat_X_Dir(a4)
		bpl.s	.No_Temet_Trace
		neg	d0
		cmp	#40,d0
		bls.s	.No_Temet_Trace
		cmp	#120,d0
		bhs.s	.No_Temet_Trace
		bra.s	.TEMET_Trace
.Fat_Left		*--Fat is Left
		tst.b	Fat_X_Dir(a4)
		bmi.s	.No_Temet_Trace
		cmp	#40,d0
		bls.s	.No_Temet_Trace
		cmp	#120,d0
		bhs.s	.No_Temet_Trace
.TEMET_Trace	*--INIT Beschl down
		tst	Fat_Shoot_Time(a4)
		bne.s	.No_Temet_Trace
		move	#160,Fat_Wait_Time(a4)
		move	#200,Fat_Shoot_Time(a4)
.No_Temet_Trace	rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*-------------------------------------------------------------------------------------
Saege_Y_Schwank
Fat_Y_Schwank	*--*>Y Speed Make

		tst	Fat_Y_Acce(a4)
		beq.s	.Add_Acce_Speed
		bpl.s	.Acce_Down
.Acce_Up		*--Test if Acce should be down
		move.b	Fat_Y_Speed(a4),d0
		neg.b	d0
		cmp.b	#2,d0
		bne.s	.Add_Acce_Speed
		neg	Fat_Y_Acce(a4)	
		bra.s	.Add_Acce_Speed
.Acce_Down		*--Test if Acce should be up
		move.b	Fat_Y_Speed(a4),d0
		cmp.b	#2,d0
		bne.s	.Add_Acce_Speed
		neg	Fat_Y_Acce(a4)
		;bra.s	.Add_Acce_Speed
.Add_Acce_Speed	*--Add Acce to Speed
		move	Fat_Y_Acce(a4),d0
		add	d0,Fat_Y_Speed(a4)
		*--Add Speed to Pos
		move.b	Fat_Y_Speed(a4),d0
		ext.w	d0
		add	d0,Bob_Y_Position(a4)
		rts

*-------------------------------------------------------------------------------------
*----------	EXTRAS SPUCKEN ROUT
*----------
*----------	a0 Tab wieviele welche
*----------
Spuck_Left_Tab	dc.w	1-1
		dc.l	$0-$00028000,$ffff0000
		dc.w	GEMC1
		dc.b	-1,0
		dc.w	-16,20
Spuck_Right_Tab	dc.w	1-1
		dc.l	$0+$00028000,$ffff0000
		dc.w	GEMC2
		dc.b	1,0
		dc.w	48,20
Spuck_drei_Tab	dc.w	3-1
		dc.l	$0-$00028000,$ffff0000
		dc.w	GEMC1
		dc.b	-1,0
		dc.w	-16,10
		dc.l	$0-$00000000,$fffa0000
		dc.w	GEMC2
		dc.b	1,0
		dc.w	32,10
		dc.l	$0+$00028000,$ffff0000
		dc.w	GEMC3
		dc.b	-1,0
		dc.w	48,10
Spuck_Extra_Tab	dc.w	3-1
		dc.l	$0-$00028000,$ffff0000
		dc.w	GEMC1
		dc.b	-1,0
		dc.w	-16,10
		dc.l	$0-$00000000,$fffa0000
		dc.w	-1
		dc.b	0,0
		dc.w	32,10
		dc.l	$0+$00028000,$ffff0000
		dc.w	GEMC2
		dc.b	-1,0
		dc.w	48,10
SPUCKTAB_SIZE	=16

Extra_Tab		dc.w	GEMC1,HEART,ONEUP,SHIELDR,SHIELDG,SHIELDR,SHIELDG,SHIELDG
*-------------------------------------------------------------------------------------
Spuck_GEMExtra_Rout	*--*>Gem/extra/rout
		move	(a0)+,d7

		*--*>Choose Gem to Spuck
.Extra_Enter_Loop	move	8(a0),d0
		move.b	10(a0),d6
		tst	d0
		bpl.s	.OknoRealExtra
		*--*>Choose Real Extra
		jsr	Get_Zuffi_d0
		and	#7,d0
		lea	Extra_Tab,a2
		add	d0,d0
		move	(a2,d0),d0

.OknoRealExtra	movem.l	d7/a0,-(sp)
		jsr	.EnterGem
		movem.l	(sp)+,d7/a0
		add	#SPUCKTAB_SIZE,a0
		dbf	d7,.Extra_Enter_Loop
		rts

*- - - - - - - - - - - - - - - - - - - - - - - - - - - -
.EnterGem		*--Enter Gem
		lea	Area_Enter_Vector(a6),a1
		move	Bob_X_Position(a4),d1
		add	12(a0),d1
		move	Bob_Y_Position(a4),d2
		add	14(a0),d2
		move.l	a4,a5
		jsr	Search_Bob_Entry
		tst	d0
		bmi.s	.NoEntry_Found
.Choose_Flug	*--Choose Which Flugbahn
		move.l	Bob_Routine(a4),Extra_Init_Rout(a4)
		move.l	#Extra_Rout_Falling,Bob_Routine(a4)
		move.l	(a0),Gem_X_Speed(a4)
		move.l	4(a0),Gem_Y_Speed(a4)
		move.b	d6,Gem_Which_Col(a4)
.NoEntry_Found	move.l	a5,a4
		rts

**************************************************************************************
*-------------------------------------------------------------------------------------
*--------------	SMILER ROUT
*-------------------------------------------------------------------------------------
*-------------------------------------------------------------------------------------
Smiler_X_Dir	=Bob_Special_1	;B
Smiler_Anz_X_Move	=Bob_Special_1+1	;B
Smiler_X_Dreh	=Bob_Special_2	;W
Smiler_Which_E_Move	=Bob_Special_3	;B
Smiler_Dead_Time	=Bob_Special_3+1	;B
Smiler_Head_First_E	=Bob_Koords_Save1	;LW
Smiler_Next_Entry	=Bob_Koords_Save2	;LW
*-------------------------------------------------------------------------------------
Init_Smile_L
Init_Smile_R	*--*>Init Smile Worm Right
		move.w	#256,Bob_Out_X_Val(a4)
		move.w	#200+32,Bob_Out_Y_Val(a4)
		*--*>Try Get Entries !
		jsr	Out_Bob_Damage
		moveq	#4,d0
		jsr	Get_Entry_Adrs_HI	;MID
		tst	d0
		bne	.End_Smiler
		*--*>Entries found
		lea	ENTRY_ADRS(a6),a0
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
		*---*>First Enter Last Element
		move	Bob_X_Position(a4),d1
		move	Bob_Y_Position(a4),d2
		move.l	Bob_Entry_Adress(a4),a1
		move.l	12(a0),a4
		move	#S_Smile_Body_R,d0
		jsr	ENTER_BOB
		move.l	#Body_R_Anim_3,Bob_Next_Anim(a4)
		clr.w	Bob_Anim_Delay(a4)
		move.l	#Smiler_Mover,Bob_Routine(a4)
		move.b	#1,Smiler_X_Dir(a4)
		move.l	8(a0),Smiler_Next_Entry(a4)

		move.l	a4,a5
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
		*---*>Enter mid Element
		move	Bob_X_Position(a5),d1
		move	Bob_Y_Position(a5),d2
		move.l	Bob_Entry_Adress(a5),a1
		move.l	8(a0),a4
		move	#S_Smile_Body_R,d0
		jsr	ENTER_BOB
		move.l	#Body_R_Anim_2,Bob_Next_Anim(a4)
		clr.w	Bob_Anim_Delay(a4)
		move.b	#1,Smiler_X_Dir(a4)
		move.l	#Smiler_Body_Rout,Bob_Routine(a4)
		move.l	4(a0),Smiler_Next_Entry(a4)
		move.l	a4,a5
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
		*---*>Enter first Element
		move	Bob_X_Position(a5),d1
		move	Bob_Y_Position(a5),d2
		move.l	Bob_Entry_Adress(a5),a1
		move.l	4(a0),a4
		move	#S_Smile_Body_R,d0
		jsr	ENTER_BOB
		move.l	#Body_R_Anim_1,Bob_Next_Anim(a4)
		clr.w	Bob_Anim_Delay(a4)
		move.b	#1,Smiler_X_Dir(a4)
		move.l	#Smiler_Body_Rout,Bob_Routine(a4)
		move.l	(a0),Smiler_Next_Entry(a4)
		move.l	a4,a5
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
		*---*>Enter HEAD
		move	Bob_X_Position(a5),d1
		move	Bob_Y_Position(a5),d2
		move.l	Bob_Entry_Adress(a5),a1
		move.l	(a0),a4
		move	#S_Smile_R,d0
		jsr	ENTER_BOB
		move.l	#Smiler_Head_Rout,Bob_Routine(a4)
		move.b	#1,Smiler_X_Dir(a4)
		move.l	#-1,Smiler_Next_Entry(a4)
		move.l	12(a0),Smiler_Head_First_E(a4)
.End_Smiler	rts
*-------------------------------------------------------------------------------------
*-------------------------------------------------------------------------------------
;Smiler_X_Dir	=Bob_Special_1	;B
;Smiler_Anz_X_Move	=Bob_Special_1+1	;B
;Smiler_Which_E_Move
;Smiler_X_Dreh	=Bob_Special_2	;W
;Smiler_Next_Entry	=Bob_Koords_Save2	;LW
*-------------------------------------------------------------------------------------
Smiler_Body_Rout	*--*>Smiler Body Rout
		tst.b	Smiler_Dead_Time(a4)
		beq.s	.NoDead
		jsr	Handle_Smiler_Dead
		jsr	Show_Smiler
		rts
.NoDead		jsr	Init_Body_Anim
		jsr	Standart_BobAnim
		jsr	Test_TEMET_Hit
		jsr	PlayBubble_Rout
		jsr	Show_Smiler
		rts
*-------------------------------------------------------------------------------------
Smiler_Head_Rout	*--*>Smiler Head Routine
		jsr	Init_Head_Anim
		jsr	Test_TEMET_Hit
		jsr	Test_Smiler_Hit
		jsr	Test_Smiler_Turn
		jsr	Show_Smiler
		rts
*-------------------------------------------------------------------------------------
Smiler_Mover	*--*>Smiler Move Routine
		tst.b	Smiler_Dead_Time(a4)
		beq.s	.NoDead
		jsr	Handle_Smiler_Dead
		jsr	Show_Smiler
		rts
.NoDead		*--*>Test If End Rout OK
		jsr	Init_Body_Anim
		jsr	Standart_BobAnim
		jsr	Smiler_Move_It
		jsr	Smiler_Out_Test
		jsr	Show_Smiler
		rts
*-------------------------------------------------------------------------------------
*-------------------------------------------------------------------------------------
Init_Head_Anim	*--*>Init Head Anim According to Dir
		tst.b	Smiler_X_Dir(a4)
		bpl.s	.Right
.Left		move.l	#Head_L_Anim,Bob_Next_Anim(a4)
		jsr	Get_Next_Bob_Frame
		rts
.Right		move.l	#Head_R_Anim,Bob_Next_Anim(a4)
		jsr	Get_Next_Bob_Frame
		rts
*-------------------------------------------------------------------------------------
Init_Body_Anim	*--*>Init Head Anim According to Dir
		tst.b	Smiler_X_Dir(a4)
		bpl.s	.Right
.Left		*--*>Check Size
		cmp.l	#Body_R_Anim_1+4+6,Bob_Next_Anim(a4)
		beq.s	.Init_L1
		cmp.l	#Body_R_Anim_2+4+6,Bob_Next_Anim(a4)
		beq.s	.Init_L2
		cmp.l	#Body_R_Anim_3+4+6,Bob_Next_Anim(a4)
		beq.s	.Init_L3
		rts
.Init_L1		move.l	#Body_L_Anim_1,Bob_Next_Anim(a4)
		bra.s	.Continue
.Init_L2		move.l	#Body_L_Anim_2,Bob_Next_Anim(a4)
		bra.s	.Continue
.Init_L3		move.l	#Body_L_Anim_3,Bob_Next_Anim(a4)
		bra.s	.Continue

.Right		*--*>Check Size
		cmp.l	#Body_L_Anim_1+4+6,Bob_Next_Anim(a4)
		beq.s	.Init_R1
		cmp.l	#Body_L_Anim_2+4+6,Bob_Next_Anim(a4)
		beq.s	.Init_R2
		cmp.l	#Body_L_Anim_3+4+6,Bob_Next_Anim(a4)
		beq.s	.Init_R3
		rts
.Init_R1		move.l	#Body_R_Anim_1,Bob_Next_Anim(a4)
		bra.s	.Continue
.Init_R2		move.l	#Body_R_Anim_2,Bob_Next_Anim(a4)
		bra.s	.Continue
.Init_R3		move.l	#Body_R_Anim_3,Bob_Next_Anim(a4)
		;bra.s	.Continue

.Continue		jsr	Get_Next_Bob_Frame
		rts

*-------------------------------------------------------------------------------------
Test_Smiler_Turn	*--*>test auf X Koll oder Ground End
		move	Bob_X_Position(a4),d0
		add	#16,d0
		move	Bob_Y_Position(a4),d1
		addq	#8,d1
		jsr	Get_Block_Bits
		swap	d0
		*--*>Test auf X Kolli
		btst	#SCR_KOLLISION_BIT,d0
		bne.s	.Init_Change_Dir

		*--*>Test if Left is Ground
		move	Bob_X_Position(a4),d0
		add	#16,d0
		move	Bob_Y_Position(a4),d1
		add	#8+16,d1
		jsr	Get_Block_Bits
		add	d0,d0
		add	d0,d0
		move.l	Scr_Block_EntryAdrs(a6),a1
		move.l	(a1,d0),a1
		cmp.b	#SCHRAEG,Block_Schraeg_Flag(a1)
		beq.s	.Init_Change_Dir
		cmp.b	#boden,Block_Through(a1)
		beq.s	.Back

.Init_Change_Dir	*--*>Init Change Dir
		move.l	Smiler_Head_First_E(a4),a5
		move	Bob_X_Position(a4),d0
		sub	Smiler_X_Dreh(a5),d0
		bpl.s	.okposi
		neg	d0
.okposi		cmp	#48,d0
		blo.s	.Back
		move	Bob_X_Position(a4),Smiler_X_Dreh(a5)
.Back		rts
*-------------------------------------------------------------------------------------
Check_Turn	*--*>Check If Element should Turn
		move	Smiler_X_Dreh(a5),d7
		tst.l	Smiler_Next_Entry(a4)
		bmi.s	.NoChnged7
		add	#8,d7
		;tst.b	Smiler_X_Dir(a4)
		;bmi.s	.NoChnged7
		;b	#32,d7
.NoChnged7	cmp	Bob_X_Position(a4),d7
		bne.s	.NoTurn
		*--*>makeTurn
		neg.b	Smiler_X_Dir(a4)
.NoTurn		*--*>Turn
		rts
*-------------------------------------------------------------------------------------
Smiler_Move_It	*--*>Move Head or other
		cmp.b	#30,Smiler_Anz_X_Move(a4)
		bhs.s	.MoveHead_always
.MoveBack_always	*--*>Move Back Always
		addq.b	#1,Smiler_Anz_X_Move(a4)
		move.b	Smiler_Which_E_Move(a4),d0
		ext.w	d0
		move.l	a4,a5
.MoveLoop		*--*>Move Loop
		jsr	Check_Turn
		addq	#1,Bob_X_Position(a4)
		tst.b	Smiler_X_Dir(a4)
		bpl.s	.NoLeft
		subq	#2,Bob_X_Position(a4)
.NoLeft		move.l	Smiler_Next_Entry(a4),a4
		dbf	d0,.MoveLoop
		move.l	a5,a4
		addq.b	#1,Smiler_Which_E_Move(a4)
		cmp.b	#3,Smiler_Which_E_Move(a4)
		bne.s	.NoEOverflow
		clr.b	Smiler_Which_E_Move(a4)
.NoEOverflow	*--*>GOBACk
		rts

.MoveHead_always	cmp.b	#30+15,Smiler_Anz_X_Move(a4)
		bhs.s	.MoveHead
		addq.b	#1,Smiler_Anz_X_Move(a4)
		cmp.b	#30+15,Smiler_Anz_X_Move(a4)
		bne.s	.NoPlay
		nop
		IFEQ	SOUNDFX
		moveq	#2,d0
		jsr	TFMX+16
		ENDC
.NoPlay		bra.s	.NoEOverflow1

.MoveHead		*--*>Move Head To Front
		cmp.b	#2*30+15,Smiler_Anz_X_Move(a4)
		blo.s	.OkMoveHead
		clr.b	Smiler_Anz_X_Move(a4)
		bra.s	.MoveBack_always
.OkMoveHead	*--*>Move Head first
		addq.b	#1,Smiler_Anz_X_Move(a4)

		move.b	Smiler_Which_E_Move(a4),d0
		move.b	#3-1,d1
		ext.w	d0
		ext.w	d1
		move.l	a4,a5
		move.l	Smiler_Next_Entry(a4),a4
.MoveLoopH	*--*>Head Move Loop
		cmp	d0,d1
		bhi.s	.NextHead
		jsr	Check_Turn
		addq	#1,Bob_X_Position(a4)
		tst.b	Smiler_X_Dir(a4)
		bpl.s	.NextHead
		subq	#2,Bob_X_Position(a4)
.NextHead		move.l	Smiler_Next_Entry(a4),a4
		dbf	d1,.MoveLoopH

		move.l	a5,a4
		addq.b	#1,Smiler_Which_E_Move(a4)
		cmp.b	#3,Smiler_Which_E_Move(a4)
		bne.s	.NoEOverflow1
		clr.b	Smiler_Which_E_Move(a4)
.NoEOverflow1	*--*>GOBACk
		rts
*-------------------------------------------------------------------------------------
Test_Smiler_Hit	*--*> Test if SMILER is Hit
		lea	WorkRam,a2
		jsr	KollTopBobTest
		tst	d7
		bmi.s	.NoKoll
		lea	WorkRam,a2
		jsr	Make_Bump
.Enter_Smoke	*--Enter BIG Smoke
		moveq	#0,d3
		moveq	#-6,d4
		jsr	ENTER_SMOKE_Y_Offs
		moveq	#0,d3
		moveq	#-6,d4
		jsr	ENTER_SMOKE_X_Offs
		jsr	Out_Bob_Damage
		IFEQ	SOUNDFX
		moveq	#11,d0
		jsr	TFMX+16
		ENDC
		*--*>Init Dead Time in Body
		move.l	Smiler_Head_First_E(a4),a4
		move.b	#50,Smiler_Dead_Time(a4)
		move.l	Smiler_Next_Entry(a4),a4
		move.b	#35,Smiler_Dead_Time(a4)
		move.l	Smiler_Next_Entry(a4),a4
		move.b	#20,Smiler_Dead_Time(a4)
.NoKoll		rts
*-------------------------------------------------------------------------------------
Handle_Smiler_Dead	*--*>Handle Smiler Dead
		subq.b	#1,Smiler_Dead_Time(a4)
		bne.s	.StillNotDead
		moveq	#-8,d3
		moveq	#-6,d4
		jsr	ENTER_SMOKE_Y
		moveq	#-8,d3
		moveq	#-6,d4
		jsr	ENTER_SMOKE_X
		jsr	Out_Bob_Damage
		IFEQ	SOUNDFX
		moveq	#11,d0
		jsr	TFMX+16
		ENDC
.StillNotDead	rts
*-------------------------------------------------------------------------------------
Smiler_Out_Test	*--*>Test out Smiler
		jsr	Test_Bob_Out
		cmp.b	#BOB_FALSE,Bob_Used(a4)
		bne.s	.NoOutSmiler
.OutLoop		*--*>Out Other Elements
		tst.l	Smiler_Next_Entry(a4)
		bmi.s	.NoOutSmiler
		move.l	Smiler_Next_Entry(a4),a4
		move.b	#BOB_FALSE,Bob_Used(a4)
		bra.s	.OutLoop
.NoOutSmiler	rts
*-------------------------------------------------------------------------------------
*-------------------------------------------------------------------------------------
Head_R_Anim:	dc.w	1
		dc.l	WWorm_Obj0
		dc.w	0,0
		dc.w	ENTRY_END
		dc.l	Head_R_Anim
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Head_L_Anim:	dc.w	0
		dc.l	WWorm_Obj0
		dc.w	0,0
		dc.w	ENTRY_END
		dc.l	Head_L_Anim
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Body_R_Anim_1:	dc.w	1
		dc.l	WWorm_Obj1
		dc.w	0,1
		dc.w	ENTRY_END
		dc.l	Body_R_Anim_1
Body_R_Anim_2:	dc.w	1
		dc.l	WWorm_Obj2
		dc.w	0,5
		dc.w	ENTRY_END
		dc.l	Body_R_Anim_2
Body_R_Anim_3:	dc.w	1
		dc.l	WWorm_Obj3
		dc.w	0,9
		dc.w	ENTRY_END
		dc.l	Body_R_Anim_3
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Body_L_Anim_1:	dc.w	0
		dc.l	WWorm_Obj1
		dc.w	0,1
		dc.w	ENTRY_END
		dc.l	Body_L_Anim_1
Body_L_Anim_2:	dc.w	0
		dc.l	WWorm_Obj2
		dc.w	0,5
		dc.w	ENTRY_END
		dc.l	Body_L_Anim_2
Body_L_Anim_3:	dc.w	0
		dc.l	WWorm_Obj3
		dc.w	0,9
		dc.w	ENTRY_END
		dc.l	Body_L_Anim_3
**************************************************************************************
*-------------------------------------------------------------------------------------
*-----------	HUHN DIVE
*-------------------------------------------------------------------------------------
HUHN_ACCE_N	=$0-$0010
HUHN_ACCE_P	=$0010
HUHN_PANIC_UP	=$0-$0018
*-------------------------------------------------------------------------------------
Huhn_Time_Blink	=Bob_Special_1	;B
Huhn_Time_Force_Dir	=Bob_Special_1+1	;B
Huhn_Fall_Down	=Bob_Special_2	;B
Huhn_Huhn_Out_Offs	=Bob_Special_2+1	;B
Huhn_Force_Dead	=Bob_Special_3	;B
Huhn_X_Dir		=Bob_Special_3+1	;B
Huhn_X_Speed	=Bob_Special_4	;W
Huhn_Y_Speed	=Bob_Koords_Save1	;W
Huhn_Y_Acce		=Bob_Koords_Save1+2	;W
Huhn_Hit_Flag	=Bob_Koords_Save2	;B
*-------------------------------------------------------------------------------------
Init_Huhn_L		*--*>Init Huhn Left
		move.b	#-1,Huhn_X_Dir(a4)
		move.l	#Huhn_Rout,Bob_Routine(a4)
		rts
*-------------------------------------------------------------------------------------
Init_Huhn_R	*--*>Init Huhn Right
		move.b	#1,Huhn_X_Dir(a4)
		move.l	#Huhn_Rout,Bob_Routine(a4)
		rts
*-------------------------------------------------------------------------------------
Huhn_Rout		*--*>Routine Routine Routine Routine
		jsr	Standart_BobAnim
		jsr	Test_Bob_Out
		jsr	Test_TEMET_Hit
		jsr	Make_Move
		jsr	Make_Anim_Speed
		jsr	Test_Huhn_Hit
		jsr	PlayBubble_Rout
		jsr	PlayBubble_Rout
		jsr	Show_Huhn
		rts
*-------------------------------------------------------------------------------------
Test_Huhn_Hit	*--*> Test if HUHN is Hit
		lea	WorkRam,a2
		jsr	KollTopBobTest
		tst	d7
		bmi.s	.NoKoll
		lea	WorkRam,a2
		jsr	Make_Bump
.Enter_Smoke	*--Enter BIG Smoke
		tst.b	Huhn_Hit_Flag(a4)
		beq.s	.NormPlatt
		*--*>deadPlatt
		moveq	#8,d3
		moveq	#6,d4
		jsr	ENTER_SMOKE_Y_Offs
		moveq	#8,d3
		moveq	#6,d4
		jsr	ENTER_SMOKE_X_Offs
		jsr	Out_Bob_Damage
		IFEQ	SOUNDFX
		moveq	#11,d0
		jsr	TFMX+16
		ENDC
		rts

.NormPlatt		*--*>Second Rout
		moveq	#8,d3
		moveq	#6,d4
		jsr	ENTER_SMOKE_X_Offs
		move.b	#1,Huhn_Hit_Flag(a4)
		move	#2,Bob_Anim_Delay_Init(a4)
		move.w	#$0400,Huhn_Y_Speed(a4)
		IFEQ	SOUNDFX
		moveq	#9,d0
		jsr	TFMX+16
		ENDC
.NoKoll		rts
*-------------------------------------------------------------------------------------
Make_Anim_Speed	*--*>Make Anim Speed
		tst.b	Huhn_Hit_Flag(a4)
		bne.s	.NoSlow
		move	#3,Bob_Anim_Delay_Init(a4)
		tst	Huhn_Y_Acce(a4)
		bmi.s	.NoSlow
		move	#6,Bob_Anim_Delay_Init(a4)
.NoSlow		rts
*-------------------------------------------------------------------------------------
Make_Move		*---*>Make Move X und Y
		*--> X First
		tst.b	Huhn_Time_Force_Dir(a4)
		beq.s	.Normal_X_Move
		subq.b	#1,Huhn_Time_Force_Dir(a4)
		bra.s	.X_Move
.Normal_X_Move	*--*>Decide Dir and Move
		jsr	Decide_X_Dir
.X_Move		*--*>Move X
		move	Huhn_X_Speed(a4),d0
		add	d0,Bob_X_Position(a4)
		jsr	Test_Huhn_XKoll
		tst	d7
		bpl.s	.Make_Move_Y
		neg	Huhn_X_Speed(a4)
		move.b	#150,Huhn_Time_Force_Dir(a4)
		jsr	Make_Huhn_Dirs
.Make_Move_Y	*--*>Y Moven 
		tst.b	Huhn_Hit_Flag(a4)
		beq.s	.Norm_Y
		*--*>PANIC UP
		move	#HUHN_PANIC_UP,d0
		add	d0,Huhn_Y_Speed(a4)
		move.b	Huhn_Y_Speed(a4),d1
		cmp.b	#-2,d1
		bne.s	.NoMiusfour
		addq.b	#1,d1
		sub	d0,Huhn_Y_Speed(a4)
.NoMiusfour		ext.w	d1
		add	d1,Bob_Y_Position(a4)
		bra	.End_Move

.Norm_Y		lea	WorkRam,a2
		moveq	#0,d7
		move	TEMET_Y_Position(a2),d0
		sub	Bob_Y_Position(a4),d0
		bpl.s	.Move_Down	;.TestHU
.TestHD		neg	d0
		cmp	#5,d0
		bls.s	.Move_Down
		cmp	#20,d0
		bhs.s	.Move_Up
		bra	.End_Move

.Move_Up		*--*>Move Up
		subq	#1,d7
		bra.s	.Move_Y_Cnt
.Move_Down		addq	#1,d7
.Move_Y_Cnt		*--*>Make_Up_Down_Move
		move	Huhn_Y_Acce(a4),d0
		add	d0,Huhn_Y_Speed(a4)
		move.b	Huhn_Y_Speed(a4),d0
		ext.w	d0
		add	d0,d7
		add	d7,Bob_Y_Position(a4)
.Make_Acce_Corret	*--*>Acce auf Vorzeichen berprfen
		tst	Huhn_Y_Acce(a4)
		bpl.s	.PosSpeed_Vgl
.NegSpeed_Vgl	cmp.b	#-3,Huhn_Y_Speed(a4)
		beq.s	.NegAcce
		bra.s	.AcceOk
.PosSpeed_Vgl	cmp.b	#3,Huhn_Y_Speed(a4)
		beq.s	.NegAcce
		bra.s	.AcceOk
.NegAcce		*--*>Acce negieren
		neg	Huhn_Y_Acce(a4)
.AcceOk

.TestYUpKoll	*--*>Test Y Kollision !
		tst	d7
		beq	.End_Move
		bpl.s	.Test_Y_Ground
		tst.b	Huhn_Hit_Flag(a4)
		bne.s	.Test_Y_Ground

.Test_Y_Up		move	Bob_X_Position(a4),d0
		add	#16,d0
		move	Bob_Y_Position(a4),d1
		jsr	Get_Block_Bits
		swap	d0
		btst	#SCR_KOLLISION_BIT,d0
		beq	.End_Move
		*--*>Y Up Kollision
		and	#$fff0,Bob_Y_Position(a4)
		add	#16,Bob_Y_Position(a4)
		move.w	#$0200,Huhn_Y_Speed(a4)
		move	#HUHN_ACCE_P,Huhn_Y_Acce(a4)
		addq	#3,Bob_Y_Position(a4)
		moveq	#8,d3
		moveq	#-4,d4
		jsr	ENTER_SMOKE_X_Offs
		;IFEQ	SOUNDFX
		;moveq	#10,d0
		;jsr	TFMX+16
		;ENDC
		bra	.End_Move

.Test_Y_Ground	*--*>Test Ground
		move	Bob_X_Position(a4),d0
		add	#16,d0
		move	Bob_Y_Position(a4),d1
		add	#32,d1
		jsr	Get_Block_Bits
		add	d0,d0
		add	d0,d0
		move.l	Scr_Block_EntryAdrs(a6),a1
		move.l	(a1,d0),a1
		cmp.b	#boden,Block_Through(a1)
		bne.s	.End_Move
		*--*>Init End Jump Anim
		and	#$fff0,Bob_Y_Position(a4)
		subq	#4,Bob_Y_Position(a4)
		move.w	#-$0100,Huhn_Y_Speed(a4)
		move	#HUHN_ACCE_N,Huhn_Y_Acce(a4)
		moveq	#8,d3
		moveq	#0,d4
		jsr	ENTER_SMOKE_X_Offs
		IFEQ	SOUNDFX
		moveq	#3,d0
		jsr	TFMX+16
		ENDC
.Norm_Y2
.End_Move		rts
*---------------------------------------------------------------------------
Make_Huhn_Dirs	*--*>Test which dir box is flying
		tst	Huhn_X_Speed(a4)
		bpl.s	.Make_Right_Dir
.Make_Left_Dir	move.l	#Huhn_L_Anm,Bob_Next_Anim(a4)
		clr.w	Bob_Anim_Delay(a4)
		rts
.Make_Right_Dir	move.l	#Huhn_R_Anm,Bob_Next_Anim(a4)
		clr.w	Bob_Anim_Delay(a4)
		rts
*---------------------------------------------------------------------------
Decide_X_Dir	*--*>Decide if TIMEt is LEft or Right
		move	Huhn_X_Speed(a4),d1
		lea	WorkRam,a2
		move	TEMET_X_Position(a2),d0
		sub	Bob_X_Position(a4),d0
		bmi.s	.Huhn_Right
.Huhn_Left	*--*> Huhn is Left
		move	#1,Huhn_X_Speed(a4)
		cmp	Huhn_X_Speed(a4),d1
		bne.s	.Init_NotDecide
		rts
.Huhn_Right	*--*> Huhn is Right
		move	#-1,Huhn_X_Speed(a4)
		cmp	Huhn_X_Speed(a4),d1
		bne.s	.Init_NotDecide
		rts
.Init_NotDecide	*--*>Gegenaktion gegen nicht entscheiden
		move.b	#80,Huhn_Time_Force_Dir(a4)
		jsr	Make_Huhn_Dirs
		rts
*---------------------------------------------------------------------------
Test_Huhn_XKoll	moveq	#0,d7	;NoKollision
		tst.b	Huhn_Hit_Flag(a4)
		bne.s	.NoXKolli
		;Calculate LevelAdr
		move	Bob_X_Position(a4),d0
		tst	Huhn_X_Speed(a4)
		bmi.s	.TestLeftXKoll
		add	#32,d0
.TestLeftXKoll	move	Bob_Y_Position(a4),d1
		add	#16,d1
		jsr	Get_Block_Bits
		swap	d0
		*--*>Test auf X Kolli
		btst	#SCR_KOLLISION_BIT,d0
		beq.s	.NoXKolli
		*-->X-Kollision
		moveq	#-8,d3
		tst	Huhn_X_Speed(a4)
		bmi.s	.TestLeftXKoll1
		moveq	#24,d3
.TestLeftXKoll1	moveq	#0,d4
		jsr	ENTER_SMOKE_Y_Offs
		moveq	#-1,d7
		IFEQ	SOUNDFX
		moveq	#10,d0
		jsr	TFMX+16
		ENDC
.NoXKolli		rts
*---------------------------------------------------------------------------
HS		=4*3*38
HMS		=4*38
*---------------------------------------------------------------------------
Huhn_R_Anm:	dc.w	1
		dc.l	WChick_Obj0
		dc.w	0,0
		dc.w	1
		dc.l	WChick_Obj1
		dc.w	0,-2
		dc.w	1
		dc.l	WChick_Obj1
		dc.w	0,-2
		dc.w	ENTRY_END
		dc.l	Huhn_R_Anm
*---------------------------------------------------------------------------
Huhn_L_Anm:	dc.w	0
		dc.l	WChick_Obj0
		dc.w	0,0
		dc.w	0
		dc.l	WChick_Obj1
		dc.w	0,-2
		dc.w	0
		dc.l	WChick_Obj1
		dc.w	0,-2
		dc.w	ENTRY_END
		dc.l	Huhn_L_Anm

**************************************************************************************
*-------------------------------------------------------------------------------------
*-----------	SAEGEFISH
*-------------------------------------------------------------------------------------
Saege_L_Anm:	dc.w	0
		dc.l	WSaw_Obj0,0
		dc.w	0
		dc.l	WSaw_Obj1,0
		dc.w	ENTRY_END
		dc.l	Saege_L_Anm
Saege_R_Anm	dc.w	1
		dc.l	WSaw_Obj0,0
		dc.w	1
		dc.l	WSaw_Obj1,0
		dc.w	ENTRY_END
		dc.l	Saege_R_Anm

Saege_Att_Anf_R_Anm	dc.w	1
		dc.l	WSaw_Obj2
		dc.w	0,-4
		dc.w	1
		dc.l	WSaw_Obj2
		dc.w	0,-4
		dc.w	1
		dc.l	WSaw_Obj2
		dc.w	0,-4
		dc.w	1
		dc.l	WSaw_Obj2
		dc.w	0,-4
		dc.w	1
		dc.l	WSaw_Obj2
		dc.w	0,-4
Saege_Att_Cnt_R_Anm	dc.w	1
		dc.l	WSaw_Obj0,0
		dc.w	1
		dc.l	WSaw_Obj1,0
		dc.w	ENTRY_END
		dc.l	Saege_Att_Cnt_R_Anm

Saege_Att_Anf_L_Anm	dc.w	0
		dc.l	WSaw_Obj2
		dc.w	0,-4
		dc.w	0
		dc.l	WSaw_Obj2
		dc.w	0,-4
		dc.w	0
		dc.l	WSaw_Obj2
		dc.w	0,-4
		dc.w	0
		dc.l	WSaw_Obj2
		dc.w	0,-4
		dc.w	0
		dc.l	WSaw_Obj2
		dc.w	0,-4
Saege_Att_Cnt_L_Anm	dc.w	0
		dc.l	WSaw_Obj0,0
		dc.w	0
		dc.l	WSaw_Obj1,0
		dc.w	ENTRY_END
		dc.l	Saege_Att_Cnt_L_Anm
*---------------------------------------------------------------------------
Saege_Attack_Flag	=Bob_Special_1	;B
Saege_X_Dir	=Bob_Special_1+1	;B
Saege_X_Range	=Bob_Special_2	;W
Saege_Wait_Time	=Bob_Special_4	;W
		;Saege_Y_Schwank	=Bob_Special_3	;W
Saege_Which_Rout	=Bob_Koords_Save1	;W
Saege_Y_Acce	=Bob_Koords_Save1+2	;W
Saege_Y_Speed	=Bob_Koords_Save2	;W
Saege_X_Speed	=Bob_Koords_Save2+2	;W
Saege_Hit		=Bob_Hit		;B

*---------------------------------------------------------------------------
Init_Saege_Left	*--*>Init Values for Flyer
		move.b	#-1,Saege_X_Dir(a4)
		bra.s	Init_Saege_Norm
Init_Saege_Right	*--*>Init Values for Flyer
		move.b	#1,Saege_X_Dir(a4)
Init_Saege_Norm	move.l	#Saege_Main_Rout,Bob_Routine(a4)
		move	#NORMAL_ROUT,Saege_Which_Rout(a4)
		move	#1,Saege_X_Speed(a4)
		move	#$0028,Saege_Y_Acce(a4)
		move.w	#256,Bob_Out_X_Val(a4)
		move.w	#200+32,Bob_Out_Y_Val(a4)
		rts
*---------------------------------------------------------------------------
FAST_AS		=1
NORM_AS		=3
*---------------------------------------------------------------------------
NORMAL_ROUT	=0
NORMAL_HIT	=1
FALL_DOWN		=2
FLY_HIT		=3
ATTACK_ROUT	=4
*---------------------------------------------------------------------------
Saege_Main_Rout	*--*>StandartRouts
		jsr	Test_Bob_Out
		jsr	Standart_BobAnim
		jsr	Show_Saege
		jsr	PlayBubble_Rout
		;jsr	.Test_Door_Smash
		;tst	d7
		;bne.s	.NoXKOllTest
		jsr	.Test_X_Kollision
.NoXKOllTest	move	#NORMAL,Bob_Race(a4)
		*--*>Test which Routs
		cmp	#NORMAL_ROUT,Saege_Which_Rout(a4)
		beq.s	.Normal_Routs
		cmp	#NORMAL_HIT,Saege_Which_Rout(a4)
		beq	.Normal_Hits
		cmp	#FALL_DOWN,Saege_Which_Rout(a4)
		beq	.Fall_Routs
		cmp	#FLY_HIT,Saege_Which_Rout(a4)
		beq	.Fly_Hit
		cmp	#ATTACK_ROUT,Saege_Which_Rout(a4)
		beq.s	.Attack_Routs
		rts
*-------------------------------------------------------------------------------------
*-----------	Saege CALL ROUTS DEPENDING ON MODE
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Normal_Routs	*--*>Test if Timet Hits Saege
		jsr	.Test_TEMET_Hit_Bob
		jsr	Saege_Y_Schwank
		jsr	Test_TEMET_Hit
		*--*>Test if wait
		tst	Saege_Wait_Time(a4)
		beq.s	.NRouts
		*--*>Wait Time
		subq	#1,Saege_Wait_Time(a4)
		rts
.NRouts		*--*>Call Dir Routs
		jsr	.Test_TEMET_InRange
		jsr	.Make_X_Speed
		jsr	.Test_Y_Koll_Dam
		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Attack_Routs	*--*>Test if Timet Hits Saege
		jsr	.Test_TEMET_Hit_Bob
		jsr	Test_TEMET_Hit
		*--*>Test if wait
		tst	Saege_Wait_Time(a4)
		beq.s	.NRouts4
		*--*>Wait Time
		tst.b	Akt_Copper_Frame(a6)
		beq.s	.NoSubUp
		addq	#1,Bob_X_Position(a4)
		tst.b	Saege_X_Dir(a4)
		bmi.s	.NoSubX
		subq	#2,Bob_X_Position(a4)
.NoSubX		subq	#1,Bob_Y_Position(a4)
.NoSubUp		subq	#1,Saege_Wait_Time(a4)
		tst	Saege_Wait_Time(a4)
		bne.s	.Ende
		*--*>Init New Anim
		move	#$0480,Saege_Y_Speed(a4)
		move	#2,Saege_X_Speed(a4)
		move	#FAST_AS,Bob_Anim_Delay(a4)
		move	#FAST_AS,Bob_Anim_Delay_Init(a4)
.Ende		rts
.NRouts4		*--*>Call Dir Routs
		jsr	.Make_X_Speed
		jsr	.Make_Y_Speed
		jsr	.Test_Y_Koll_Dam
		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Normal_Hits	*--*>Test if Timet Hits Saege
		jsr	.Test_TEMET_Hit_Bob
		jsr	Test_TEMET_Hit
		jsr	.Saege_Y_Bump
		jsr	.Test_Y_Koll_Dam
		*--*>Test if wait
		tst	Saege_Wait_Time(a4)
		beq.s	.NRouts1
		*--*>Wait Time
		subq	#1,Saege_Wait_Time(a4)
		rts
.NRouts1		*--*>Call Dir Routs
		jsr	.Make_X_Speed
		jsr	.Test_Y_Koll_Dam
		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Fly_Hit		*--*>Test if Timet Hits Saege
		jsr	.Test_TEMET_Hit_Bob
		jsr	Test_TEMET_Hit
		jsr	Saege_Y_Schwank
		*--*>Test if wait
		tst	Saege_Wait_Time(a4)
		beq.s	.NRouts2
		*--*>Wait Time
		subq	#1,Saege_Wait_Time(a4)
		rts
.NRouts2		*--*>Call Dir Routs
		jsr	.Make_X_Speed
		jsr	.Test_Y_Koll_Dam
		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Fall_Routs	*--*>Test_DownKollision
		jsr	Test_Bob_Out
		add	#$0020,Saege_Y_Speed(a4)
		move.b	Saege_Y_Speed(a4),d0
		ext.w	d0
		add	d0,Bob_Y_Position(a4)

.Test_Y_Koll_Dam:
		tst	Saege_Y_Speed(a4)
		bpl.s	.NormTest

		move	Bob_X_Position(a4),d0
		add	#20,d0
		move	Bob_Y_Position(a4),d1
		add	Bob_Y_Offset(a4),d1
		jsr	Get_Block_Bits
		swap	d0
		btst	#SCR_KOLLISION_BIT,d0
		beq.s	.NoUpKollide1
		bra.s	.UpKOLLISDE
.NoUpKollide1	move	Bob_X_Position(a4),d0
		add	#64-20,d0
		move	Bob_Y_Position(a4),d1
		add	Bob_Y_Offset(a4),d1
		jsr	Get_Block_Bits
		swap	d0
		btst	#SCR_KOLLISION_BIT,d0
		beq.s	.NoUpKollide
.UpKOLLISDE	move	#$0100,Saege_Y_Speed(a4)
		addq	#4,Bob_Y_Position(a4)
		tst	Saege_Y_Acce(a4)
		bpl.s	.OkposU1
		neg	Saege_Y_Acce(a4)
.OkposU1	moveq	#8,d3
		moveq	#-8,d4
		jsr	ENTER_SMOKE_X_Offs

.NoUpKollide	rts
*- - - - - - - - - - - - - - - - - - - - - - - - - -
.NormTest	move	Bob_X_Position(a4),d0
		add	Bob_X_Offset(a4),d0
		add	#10,d0
		move	Bob_Y_Position(a4),d1
		add	Bob_Y_Offset(a4),d1
		add	#24,d1
		jsr	Get_Block_Bits
		add	d0,d0
		add	d0,d0
		move.l	Scr_Block_EntryAdrs(a6),a1
		move.l	(a1,d0),a1
		cmp.b	#boden,Block_Through(a1)
		bne.s	.No_Down_Kollide1
		*--*>Damage or Normal
		cmp	#FALL_DOWN,Saege_Which_Rout(a4)
		beq	.Down_Kollide
		bra	.To_Kollide

.No_Down_Kollide1:
		move	Bob_X_Position(a4),d0
		add	Bob_X_Offset(a4),d0
		add	#32,d0
		move	Bob_Y_Position(a4),d1
		add	Bob_Y_Offset(a4),d1
		add	#24,d1
		jsr	Get_Block_Bits
		add	d0,d0
		add	d0,d0
		move.l	Scr_Block_EntryAdrs(a6),a1
		move.l	(a1,d0),a1
		cmp.b	#boden,Block_Through(a1)
		bne.s	.No_Down_Kollide2
		*--*>Damage or Normal
		cmp	#FALL_DOWN,Saege_Which_Rout(a4)
		beq	.Down_Kollide
		bra	.To_Kollide

.No_Down_Kollide2:
		move	Bob_X_Position(a4),d0
		add	Bob_X_Offset(a4),d0
		add	#64-10,d0
		move	Bob_Y_Position(a4),d1
		add	Bob_Y_Offset(a4),d1
		add	#24,d1
		jsr	Get_Block_Bits
		add	d0,d0
		add	d0,d0
		move.l	Scr_Block_EntryAdrs(a6),a1
		move.l	(a1,d0),a1
		cmp.b	#boden,Block_Through(a1)
		bne.s	.No_Down_Kollide
		*--*>Damage or Normal
		*--*>Damage or Normal
		cmp	#FALL_DOWN,Saege_Which_Rout(a4)
		beq	.Down_Kollide
		;bra	.To_Kollide

		*--*>Normal
.To_Kollide	move	#NORMAL_ROUT,Saege_Which_Rout(a4)
		move	#NORM_AS,Bob_Anim_Delay(a4)
		move	#NORM_AS,Bob_Anim_Delay_Init(a4)
		move	#$0-$0300,Saege_Y_Speed(a4)
		move	#$0030,Saege_Y_Acce(a4)
		moveq	#16,d3
		moveq	#-4,d4
		jsr	ENTER_SMOKE_Y_Offs
		IFEQ	SOUNDFX
		moveq	#3,d0
		jsr	TFMX+16
		ENDC
		rts
.Down_Kollide	*--*>Damage Routs
		moveq	#8,d3
		moveq	#8,d4
		jsr	ENTER_SMOKE_X_Offs
		moveq	#8,d3
		moveq	#8,d4
		jsr	ENTER_SMOKE_Y_Offs
		jsr	Out_Bob_Damage
		IFEQ	SOUNDFX
		moveq	#11,d0
		jsr	TFMX+16
		ENDC

.No_Down_Kollide	rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
**************************************************************************************
.Test_Door_Smash	*--*>Test Door Smash
		moveq	#0,d7
		move	Bob_X_Position(a4),d0
		add	Bob_X_Offset(a4),d0
		move	Bob_Y_Position(a4),d1
		add	Bob_Y_Offset(a4),d1
		add	#08,d1
		tst.b	Saege_X_Dir(a4)
		bmi.s	.Left_Smash
		add	#64,d0
.Left_Smash		jsr	Get_Block_Bits
		swap	d0
		*--Test auf X Kolli
		***!!!;btst	#WALK_BIT,d0
		beq.s	.NoSmash
		*--*>SMASH DOOR !!!
		IFEQ	SOUNDFX
		moveq	#11,d0
		jsr	TFMX+16
		ENDC
		moveq	#1,d7
		move.b	Saege_X_Dir(a4),d0
		ext.w	d0
		***!!!;move	d0,Open_Door_But(a6)
		tst.b	Saege_X_Dir(a4)
		bpl.s	.RightDoorEnter
		;jsr	ENTER_Door_Left
		rts
.RightDoorEnter	;jsr	ENTER_Door_Right
		rts
.NoSmash	*--*>NoSmash
		rts
*-------------------------------------------------------------------------------------
.Saege_Y_Bump	*--*>Make Y BUMP
		move.b	Saege_Y_Speed(a4),d0
		ext.w	d0
		add	d0,Bob_Y_Position(a4)
		sub	#$0020,Saege_Y_Speed(a4)
		cmp.b	#$fe,Saege_Y_Speed(a4)
		bne.s	.NoEnd
		*--*>End this shit
		move	#FLY_HIT,Saege_Which_Rout(a4)
		;clr.w	Saege_Y_Schwank(a4)
		move	#$0010,Saege_Y_Acce(a4)
.NoEnd		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Make_X_Speed	*--*>X Speed Make
		tst.b	Saege_X_Dir(a4)
		bpl.s	.Move_Right
.Move_Left		*--Test if Flyer scholud move Right
		tst	Saege_X_Range(a4)
		bpl.s	.Move_X
		move	Saege_X_Range(a4),d0
		neg	d0
		cmp	#200,d0
		blo.s	.Move_X
		neg.b	Saege_X_Dir(a4)
		move.l	#Saege_R_Anm,Bob_Next_Anim(a4)
		clr.w	Bob_Anim_Delay(a4)
		move	#50,Saege_Wait_Time(a4)
		bra.s	.Move_X
.Move_Right	*--Test if Flyer scholud move Left
		tst	Saege_X_Range(a4)
		bmi.s	.Move_X
		move	Saege_X_Range(a4),d0
		cmp	#200,d0
		blo.s	.Move_X
		neg.b	Saege_X_Dir(a4)
		move.l	#Saege_L_Anm,Bob_Next_Anim(a4)
		clr.w	Bob_Anim_Delay(a4)
		move	#50,Saege_Wait_Time(a4)
		;bra.s	.Move_X
.Move_X		*--Move Flyer in X Direction
		move.b	Saege_X_Dir(a4),d0
		ext.w	d0
		move	Saege_X_Speed(a4),d1
		asl	d1,d0
		add	d0,Bob_X_Position(a4)
		cmp	#ATTACK_ROUT,Saege_Which_Rout(a4)
		beq.s	.NoRangeChange
		add	d0,Saege_X_Range(a4)
.NoRangeChange	rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Make_Y_Speed	*--*>Y Speed Make
		move.b	Saege_Y_Speed(a4),d0
		ext.w	d0
		add	d0,Bob_Y_Position(a4)
		sub	#$0018,Saege_Y_Speed(a4)
		cmp	#$0100,Saege_Y_Speed(a4)
		bhi.s	.NoGeradeFly
		tst.b	Saege_X_Dir(a4)
		bpl.s	.Init_Right_Fly
.Init_Leftt_Fly	*--*>Init Left Fly Anim
		move.l	#Saege_L_Anm,Bob_Next_Anim(a4)
		bra.s	.NoGeradeFly
.Init_Right_Fly	*--*>Init Right Fly Anim
		move.l	#Saege_R_Anm,Bob_Next_Anim(a4)
.NoGeradeFly	*--*>Test if Attack_Off
		tst	Saege_Y_Speed(a4)
		bpl.s	.Endeit
		*--*>Attack Off
		move	#NORMAL_ROUT,Saege_Which_Rout(a4)
.Endeit		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Test_X_Koll_Dam
		rts	

*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Test_X_Kollision	*--*>Test X Kollision of Flyer
		move	Bob_X_Position(a4),d0
		add	Bob_X_Offset(a4),d0
		add	#2,d0
		tst.b	Saege_X_Dir(a4)
		bmi.s	.Test_Left_X_Koll
		add	#64-2,d0
.Test_Left_X_Koll	move	Bob_Y_Position(a4),d1
		add	Bob_Y_Offset(a4),d1
		add	#12,d1
		jsr	Get_Block_Bits
		swap	d0
		*--Test auf X Kolli
		btst	#SCR_KOLLISION_BIT,d0
		beq.s	.NoXKolli1

	cmp	#ATTACK_ROUT,Saege_Which_Rout(a4)
	bne.s	.NoInitHit
	move	#NORMAL_HIT,Saege_Which_Rout(a4)

.NoInitHit	*--Init Right Flyer
		clr.w	Saege_X_Range(a4)
		neg.b	Saege_X_Dir(a4)
		move	#NORMAL_ROUT,Saege_Which_Rout(a4)
		clr.w	Bob_Anim_Delay(a4)
		move	#50,Saege_Wait_Time(a4)
		move.l	#Saege_L_Anm,Bob_Next_Anim(a4)
		tst.b	Saege_X_Dir(a4)
		bmi.s	.Test_Left_X_Koll1
		move.l	#Saege_R_Anm,Bob_Next_Anim(a4)
.Test_Left_X_Koll1
.NoXKolli1		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*-------------------------------------------------------------------------------------
*-----------	Saege DEAD/DAMAGE ROUTS
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Test_TEMET_Hit_Bob	*--*>Test if Bob should blink White
		tst.b	Akt_Copper_Frame(a6)
		beq.s	.NoColourOn
		tst.b	Saege_Hit(a4)
		beq.s	.NoColourOn
		subq.b	#1,Saege_Hit(a4)
		;move	#COLOUR,Bob_Race(a4)
.NoColourOn	*--*>Test Kollision with TEMET
		lea	WorkRam,a2
		jsr	KollTopBobTest
		tst	d7
		bmi	.NoKoll
		*--Kollision ! Test if Flyer should explode
		cmp	#2,Saege_X_Speed(a4)
		beq.s	.Saege_Explode
		cmp	#FLIEGEN,TEMET_Status(a2)
		beq.s	.Saege_Explode
.Make_Bob_Hit	*--Make Bob Hit
		lea	WorkRam,a2
		jsr	Make_Bump
		move	#2,Saege_X_Speed(a4)
		move.b	#12,Saege_Hit(a4)
		move	#NORMAL_HIT,Saege_Which_Rout(a4)
		move	#FAST_AS,Bob_Anim_Delay(a4)
		move	#FAST_AS,Bob_Anim_Delay_Init(a4)
		move	#$0300,Saege_Y_Speed(a4)
		move	#$0010,Saege_Y_Acce(a4)
		move	#50,Saege_Wait_Time(a4)
		moveq	#8,d3
		moveq	#8,d4
		jsr	ENTER_SMOKE_Y_Offs
		IFEQ	SOUNDFX
		moveq	#9,d0
		jsr	TFMX+16
		ENDC
		tst.b	Saege_X_Dir(a4)
		bpl.s	.Init_Right_FlyH
.Init_Leftt_FlyH	*--*>Init Left Fly Anim
		move.l	#Saege_L_Anm,Bob_Next_Anim(a4)
		rts
.Init_Right_FlyH	*--*>Init Right Fly Anim
		move.l	#Saege_R_Anm,Bob_Next_Anim(a4)
		rts
.Saege_Explode	*--Saege Explode
		lea	WorkRam,a2
		jsr	Make_Bump
		jsr	Out_Bob_Damage
		moveq	#8,d3
		moveq	#8,d4
		jsr	ENTER_SMOKE_X_Offs
		moveq	#8,d3
		moveq	#8,d4
		jsr	ENTER_SMOKE_Y_Offs
		IFEQ	SOUNDFX
		moveq	#11,d0
		jsr	TFMX+16
		ENDC
		rts
.NoKoll		*--keine Kollision
		rts
**************************************************************************************
.Test_TEMET_InRange	*--*> Test if TEMET is in Range
		*--Get Values
		lea	WorkRam,a2
		move	TEMET_X_Position(a2),d0
		move	TEMET_Y_Position(a2),d1
		*--Sub Bob Values
		sub	Bob_X_Position(a4),d0
		sub	#16,d0
		sub	Bob_Y_Position(a4),d1
		*--Test if Bob-YDir is down
		bmi.s	.No_Temet_Trace
		cmp	#16,d1
		blo.s	.No_Temet_Trace
		cmp	#80,d1
		bhs.s	.No_Temet_Trace
		*--Test if Direction is Ok
		tst	d0
		bpl.s	.Saege_Left
.Saege_Right	*--Saege is Right
		tst.b	Saege_X_Dir(a4)
		bpl.s	.No_Temet_Trace
		neg	d0
		cmp	#40,d0
		bls.s	.No_Temet_Trace
		cmp	#120,d0
		bhs.s	.No_Temet_Trace
		bra.s	.TEMET_Trace
.Saege_Left	*--Saege is Left
		tst.b	Saege_X_Dir(a4)
		bmi.s	.No_Temet_Trace
		cmp	#40,d0
		bls.s	.No_Temet_Trace
		cmp	#120,d0
		bhs.s	.No_Temet_Trace
.TEMET_Trace	*--INIT Beschl down
		move	#NORM_AS,Bob_Anim_Delay(a4)
		move	#NORM_AS,Bob_Anim_Delay_Init(a4)
		move	#ATTACK_ROUT,Saege_Which_Rout(a4)
		move	#25,Saege_Wait_Time(a4)
		tst.b	Saege_X_Dir(a4)
		bpl.s	.Init_Right_att
.Init_Leftt_att	*--*>Init Left Fly Anim
		move.l	#Saege_Att_Anf_L_Anm,Bob_Next_Anim(a4)
		bra.s	.No_Temet_Trace
.Init_Right_att	*--*>Init Right Fly Anim
		move.l	#Saege_Att_Anf_R_Anm,Bob_Next_Anim(a4)
.No_Temet_Trace	rts

**************************************************************************************
*-------------------------------------------------------------------------------------
*-------------	BOX WATER
*-------------------------------------------------------------------------
WBox_Anm:		dc.w	0
		dc.l	WChest_Obj0,0
		dc.w	ENTRY_END
		dc.l	WBox_Anm
*-------------------------------------------------------------------------
WBox_Dam_Anm:	dc.w	0
		dc.l	WChest_Obj1
		dc.w	0,29-17+1
		dc.w	ENTRY_END
		dc.l	WBox_Dam_Anm
*-------------------------------------------------------------------------------------
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Box_Gem_Rout_WI:	*--*>Rout Initialisieren
		move.l	#Box_Gem_Rout,Bob_Routine(a4)
		move.l	#WBox_Dam_Anm,Box_Damage_Anm(a4)
		move.l	#Enter_TheGemsen,Box_Damage_EnterRout1(a4)
		move.l	#RoutRts,Box_Damage_EnterRout2(a4)
		move.l	#Show_Boxes,Box_Show_Rout(a4)
		move.l	#WBOX_Dam_Tab,Box_DamTab_Adr(a4)
		rts
*-------------------------------------------------------------------------------------
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
WBOX_Dam_Tab	dc.l	WBox_Left,WBox_Right
WBox_Left		*--*>box 1
		dc.w	0,4
		dc.l	WBox_Dam_L_Anm
		dc.w	40
		dc.b	-1,0
		dc.w	$fd00,$0010,$fc00,$0040
WBox_Right		*--*>box 2
		dc.w	32,4
		dc.l	WBox_Dam_R_Anm
		dc.w	40
		dc.b	1,0
		dc.w	$0300,0-$0010,$fc00,$0040
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
WBox_Dam_L_Anm:	dc.w	0
		dc.l	WChest_Obj2,0
		dc.w	ENTRY_END
		dc.l	WBox_Dam_L_Anm
WBox_Dam_R_Anm:	dc.w	0
		dc.l	WChest_Obj3,0
		dc.w	ENTRY_END
		dc.l	WBox_Dam_R_Anm

**************************************************************************************
*-------------------------------------------------------------------------------------
*-------------	BOX WATER
*-------------------------------------------------------------------------
WKrug_Anm:		dc.w	0
		dc.l	WAmphora_Obj0,0
		dc.w	ENTRY_END
		dc.l	WKrug_Anm
*-------------------------------------------------------------------------
WKrug_Dam_Anm:	dc.w	0
		dc.l	WAmphora_Obj1
		dc.w	0,48-25
		dc.w	ENTRY_END
		dc.l	WKrug_Dam_Anm
*-------------------------------------------------------------------------------------
*-------------------------------------------------------------------------------------
Krug_Gem_Rout:	*--*>Standart Rout
		jsr	Standart_BobAnim
		jsr	Test_Bob_Out
		lea	WorkRam,a2
		jsr	KollTopBobTest
		tst	d7
		bmi 	.NoOpen
		*--*>Damage Box
		jsr	Make_Bump
		*--*>Box_Damage
		move.l	#Box_Gem_Rout_Dam,Bob_Routine(a4)
		move.l	Box_Damage_Anm(a4),Bob_Next_Anim(a4)
		clr.w	Bob_Anim_Delay(a4)
		moveq	#0,d3
		moveq	#-2,d4
		jsr	ENTER_SMOKE_X_Offs
		moveq	#0,d3
		moveq	#-2,d4
		jsr	ENTER_SMOKE_Y_Offs
		jsr	ENTER_Krug_D
		IFEQ	SOUNDFX
		moveq	#11,d0
		jsr	TFMX+16
		ENDC
		*--*>ENTER GEMS
		move.l	Box_Damage_EnterRout1(a4),a0
		jsr	(a0)
		move.l	Box_Damage_EnterRout2(a4),a0
		jsr	(a0)
.NoOpen		move.l	Box_Show_Rout(a4),a0
		jsr	(a0)
		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ENTER_Krug_D	*---*>Enter vier Mull
		movem.l	a0-a6/d0-d7,-(sp)
.Enter_Left_Box	*--*>Enter 1
		move.l	a4,a5
		move.l	Box_DamTab_Adr(a4),a2
		move.l	(a2),a0
		jsr	Get_Entry_Krug_D
		tst	d0
		bmi.s	.NoEntryFound
		move.l	Box_Show_Rout(a5),Box_D_Show_Rout(a4)
		jsr	Enter_FlyData
		move.l	a5,a4
		*--*>Enter 2
		move.l	4(a2),a0
		jsr	Get_Entry_Krug_D
		tst	d0
		bmi.s	.NoEntryFound
		move.l	Box_Show_Rout(a5),Box_D_Show_Rout(a4)
		jsr	Enter_FlyData
.NoEntryFound	*--*>kein Eintrag mehr fei
		move.l	a5,a4
		movem.l	(sp)+,a0-a6/d0-d7
		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Get_Entry_Krug_D	*--*>Search_Entry for Mull
		move	#G_BOX_DAMAGE,d0
		move	Bob_X_Position(a4),d1
		add	(a0)+,d1
		move	Bob_Y_Position(a4),d2
		add	(a0)+,d2
		lea	Area_Enter_Vector(a6),a1
		jsr	Search_Bob_Entry
		rts
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Krug_Gem_Rout_WI:	*--*>Rout Initialisieren
		move.l	#Krug_Gem_Rout,Bob_Routine(a4)
		move.l	#WKrug_Dam_Anm,Box_Damage_Anm(a4)
		move.l	#Enter_TheGemsen,Box_Damage_EnterRout1(a4)
		move.l	#RoutRts,Box_Damage_EnterRout2(a4)
		move.l	#Show_Boxes,Box_Show_Rout(a4)
		move.l	#WKRUG_Dam_Tab,Box_DamTab_Adr(a4)
		rts
*-------------------------------------------------------------------------------------
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
WKRUG_Dam_Tab	dc.l	WKrug_Left,WKrug_Right
WKrug_Left		*--*>box 1
		dc.w	-32,4
		dc.l	WKrug_Dam_L_Anm
		dc.w	40
		dc.b	-1,0
		dc.w	$fd00,$0010,$fc00,$0040
WKrug_Right		*--*>box 2
		dc.w	0,4
		dc.l	WKrug_Dam_R_Anm
		dc.w	40
		dc.b	1,0
		dc.w	$0300,0-$0010,$fc00,$0040
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
WKrug_Dam_L_Anm:	dc.w	0
		dc.l	WAmphora_Obj2,0
		dc.w	ENTRY_END
		dc.l	WKrug_Dam_L_Anm
WKrug_Dam_R_Anm:	dc.w	1
		dc.l	WAmphora_Obj2,0
		dc.w	ENTRY_END
		dc.l	WKrug_Dam_R_Anm
**************************************************************************************
*-------------------------------------------------------------------------------------
*-------------	WATER BUBBLE
*-------------------------------------------------------------------------------------
PlayBubble_Rout	*--*>Test Play Bubble
		moveq	#127,d1
		jsr	Get_Zuffi_d2
		and	#1,d2
		beq.s	.oK
		moveq	#63,d1
.oK		move	PlayBubble(a6),d0
		addq	#1,d0
		and	d1,d0
		beq.s	.Play_It
		move	d0,PlayBubble(a6)
		rts
.Play_It		*--*>NoNoNo
		IFEQ	SOUNDFX
		moveq	#6,d0
		jsr	TFMX+16
		ENDC
		move	d0,PlayBubble(a6)
		rts

**************************************************************************************
*-------------------------------------------------------------------------------------
*-------------	WATER DOOR
*-------------------------------------------------------------------------------------
WATER_Door_Anim_Tab	dc.l	WDoor_Anim_Norm,WDoor_Anim_Small,WDoor_Obj3
		dc.w	Water_EnemyVRam/32

WTest_Init_Doors:	*--*>Init Water Dingens
		move.l	#WATER_Door_Anim_Tab,Door_Anims(a4)
		move.l	#Test_Init_Doors,Bob_Routine(a4)
		move.l	#Show_Water_Object,Door_Show_Rout(a4)
		rts
*-------------------------------------------------------------------------------------
WDoor_Anim_Norm:	dc.w	0
		dc.l	WDoor_Obj0,0
		dc.w	ENTRY_END
		dc.l	WDoor_Anim_Norm
WDoor_Anim_Small:	dc.w	0
		dc.l	WDoor_Obj2,0
		dc.w	ENTRY_END
		dc.l	WDoor_Anim_Small

**************************************************************************************
*-------------------------------------------------------------------------------------

	ENDC
